react-email 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +46 -0
- package/dist/utils/check-directory-exist.d.ts +1 -0
- package/dist/utils/check-directory-exist.js +9 -0
- package/dist/utils/check-empty-directory.d.ts +1 -0
- package/dist/utils/check-empty-directory.js +12 -0
- package/dist/utils/contants.d.ts +10 -0
- package/dist/utils/contants.js +18 -0
- package/dist/utils/copy-files.d.ts +1 -0
- package/dist/utils/copy-files.js +30 -0
- package/dist/utils/watcher.d.ts +2 -0
- package/dist/utils/watcher.js +22 -0
- package/package.json +30 -8
- package/{base → preview}/next-env.d.ts +0 -0
- package/preview/package.json +52 -0
- package/preview/postcss.config.js +6 -0
- package/preview/src/components/button.tsx +85 -0
- package/preview/src/components/code.tsx +119 -0
- package/preview/src/components/heading.tsx +114 -0
- package/preview/src/components/index.ts +7 -0
- package/preview/src/components/layout.tsx +76 -0
- package/preview/src/components/logo.tsx +71 -0
- package/preview/src/components/sidebar.tsx +137 -0
- package/preview/src/components/text.tsx +100 -0
- package/preview/src/components/topbar.tsx +55 -0
- package/preview/src/pages/_app.tsx +29 -0
- package/preview/src/pages/_document.tsx +13 -0
- package/preview/src/pages/index.tsx +36 -0
- package/preview/src/pages/preview/[slug].tsx +68 -0
- package/preview/src/styles/globals.css +3 -0
- package/preview/src/utils/as.ts +26 -0
- package/preview/src/utils/index.ts +2 -0
- package/preview/src/utils/unreachable.ts +6 -0
- package/preview/tailwind.config.js +90 -0
- package/preview/tsconfig.json +31 -0
- package/readme.md +0 -0
- package/tsconfig.json +32 -4
- package/.babelrc +0 -3
- package/base/.eslintrc.js +0 -4
- package/base/.next/build-manifest.json +0 -35
- package/base/.next/cache/webpack/client-development/0.pack +0 -0
- package/base/.next/cache/webpack/client-development/1.pack +0 -0
- package/base/.next/cache/webpack/client-development/2.pack +0 -0
- package/base/.next/cache/webpack/client-development/3.pack +0 -0
- package/base/.next/cache/webpack/client-development/4.pack +0 -0
- package/base/.next/cache/webpack/client-development/5.pack +0 -0
- package/base/.next/cache/webpack/client-development/6.pack +0 -0
- package/base/.next/cache/webpack/client-development/7.pack +0 -0
- package/base/.next/cache/webpack/client-development/8.pack +0 -0
- package/base/.next/cache/webpack/client-development/9.pack +0 -0
- package/base/.next/cache/webpack/client-development/index.pack +0 -0
- package/base/.next/cache/webpack/client-development/index.pack.old +0 -0
- package/base/.next/cache/webpack/server-development/0.pack +0 -0
- package/base/.next/cache/webpack/server-development/1.pack +0 -0
- package/base/.next/cache/webpack/server-development/10.pack +0 -0
- package/base/.next/cache/webpack/server-development/11.pack +0 -0
- package/base/.next/cache/webpack/server-development/12.pack +0 -0
- package/base/.next/cache/webpack/server-development/13.pack +0 -0
- package/base/.next/cache/webpack/server-development/2.pack +0 -0
- package/base/.next/cache/webpack/server-development/3.pack +0 -0
- package/base/.next/cache/webpack/server-development/4.pack +0 -0
- package/base/.next/cache/webpack/server-development/5.pack +0 -0
- package/base/.next/cache/webpack/server-development/6.pack +0 -0
- package/base/.next/cache/webpack/server-development/7.pack +0 -0
- package/base/.next/cache/webpack/server-development/8.pack +0 -0
- package/base/.next/cache/webpack/server-development/9.pack +0 -0
- package/base/.next/cache/webpack/server-development/index.pack +0 -0
- package/base/.next/cache/webpack/server-development/index.pack.old +0 -0
- package/base/.next/package.json +0 -1
- package/base/.next/react-loadable-manifest.json +0 -1
- package/base/.next/server/_error.js +0 -56
- package/base/.next/server/emails_notion-magic-link_tsx.js +0 -115
- package/base/.next/server/emails_package_json.js +0 -25
- package/base/.next/server/emails_packages_avatar-fallback_tsx.js +0 -55
- package/base/.next/server/emails_packages_avatar-image_tsx.js +0 -55
- package/base/.next/server/emails_packages_button_tsx.js +0 -55
- package/base/.next/server/emails_packages_code_tsx.js +0 -55
- package/base/.next/server/emails_packages_container_tsx.js +0 -55
- package/base/.next/server/emails_packages_heading_tsx.js +0 -55
- package/base/.next/server/emails_packages_hr_tsx.js +0 -55
- package/base/.next/server/emails_packages_img_tsx.js +0 -55
- package/base/.next/server/emails_packages_link_tsx.js +0 -55
- package/base/.next/server/emails_packages_ol_tsx.js +0 -55
- package/base/.next/server/emails_packages_pre_tsx.js +0 -55
- package/base/.next/server/emails_packages_text_tsx.js +0 -55
- package/base/.next/server/emails_packages_ul_tsx.js +0 -55
- package/base/.next/server/emails_stripe-welcome_tsx.js +0 -105
- package/base/.next/server/emails_vercel-invite-user_tsx.js +0 -135
- package/base/.next/server/middleware-build-manifest.js +0 -1
- package/base/.next/server/middleware-manifest.json +0 -6
- package/base/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/base/.next/server/pages/[...path].js +0 -286
- package/base/.next/server/pages/_app.js +0 -178
- package/base/.next/server/pages/_document.js +0 -211
- package/base/.next/server/pages/_error.js +0 -56
- package/base/.next/server/pages/api/[...path].js +0 -366
- package/base/.next/server/pages-manifest.json +0 -5
- package/base/.next/server/webpack-api-runtime.js +0 -198
- package/base/.next/server/webpack-runtime.js +0 -168
- package/base/.next/static/chunks/_error.js +0 -28
- package/base/.next/static/chunks/amp.js +0 -872
- package/base/.next/static/chunks/main.js +0 -1166
- package/base/.next/static/chunks/pages/[...path].js +0 -696
- package/base/.next/static/chunks/pages/_app.js +0 -499
- package/base/.next/static/chunks/pages/_error.js +0 -28
- package/base/.next/static/chunks/polyfills.js +0 -1
- package/base/.next/static/chunks/react-refresh.js +0 -62
- package/base/.next/static/chunks/webpack.js +0 -1242
- package/base/.next/static/development/_buildManifest.js +0 -1
- package/base/.next/static/development/_ssgManifest.js +0 -1
- package/base/.next/static/webpack/118b91f318a0d84a.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/15a828ba327d9199.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/8922f8eea8c17006.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/b1bdf67f3279613d.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/bcfc06b028800b63.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/f600aa1a5c634af4.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/pages/[...path].b1bdf67f3279613d.hot-update.js +0 -22
- package/base/.next/static/webpack/webpack.118b91f318a0d84a.hot-update.js +0 -23
- package/base/.next/static/webpack/webpack.15a828ba327d9199.hot-update.js +0 -18
- package/base/.next/static/webpack/webpack.8922f8eea8c17006.hot-update.js +0 -18
- package/base/.next/static/webpack/webpack.b1bdf67f3279613d.hot-update.js +0 -18
- package/base/.next/static/webpack/webpack.bcfc06b028800b63.hot-update.js +0 -23
- package/base/.next/static/webpack/webpack.f600aa1a5c634af4.hot-update.js +0 -31
- package/base/.next/trace +0 -20
- package/base/next.config.js +0 -11
- package/base/package.json +0 -51
- package/base/postcss.config.js +0 -20
- package/base/public/static/fonts/Biotif-Bold.woff +0 -0
- package/base/public/static/fonts/Biotif-Bold.woff2 +0 -0
- package/base/public/static/fonts/Biotif-Book.woff +0 -0
- package/base/public/static/fonts/Biotif-Book.woff2 +0 -0
- package/base/public/static/fonts/Biotif-Regular.woff +0 -0
- package/base/public/static/fonts/Biotif-Regular.woff2 +0 -0
- package/base/public/static/fonts/Biotif-SemiBold.woff +0 -0
- package/base/public/static/fonts/Biotif-SemiBold.woff2 +0 -0
- package/base/public/static/fonts/FiraCode-Regular.woff +0 -0
- package/base/public/static/fonts/FiraCode-Regular.woff2 +0 -0
- package/base/public/static/images/favicon.ico +0 -0
- package/base/public/static/images/notion-logo.png +0 -0
- package/base/public/static/images/stripe-logo.png +0 -0
- package/base/public/static/images/vercel-arrow.png +0 -0
- package/base/public/static/images/vercel-logo.png +0 -0
- package/base/readme.md +0 -19
- package/base/src/components/layout.tsx +0 -50
- package/base/src/components/topbar/external.tsx +0 -30
- package/base/src/components/topbar/feedback.tsx +0 -89
- package/base/src/components/topbar/logo.tsx +0 -27
- package/base/src/components/topbar/send-test.tsx +0 -95
- package/base/src/components/topbar/toggle-view.tsx +0 -66
- package/base/src/helpers/bulb-icon.json +0 -1
- package/base/src/helpers/chat-icon.json +0 -1
- package/base/src/helpers/check-icon.json +0 -1
- package/base/src/helpers/code-icon.json +0 -1
- package/base/src/helpers/copy-icon.json +0 -1
- package/base/src/helpers/desktop-icon.json +0 -1
- package/base/src/helpers/download-icon.json +0 -1
- package/base/src/helpers/eye-icon.json +0 -1
- package/base/src/helpers/file-icon.json +0 -1
- package/base/src/helpers/folder-icon.json +0 -1
- package/base/src/helpers/inbox-icon.json +0 -1
- package/base/src/helpers/launch-icon.json +0 -1
- package/base/src/helpers/mail-icon.json +0 -1
- package/base/src/helpers/mobile-icon.json +0 -1
- package/base/src/helpers/note-icon.json +0 -1
- package/base/src/helpers/reply-icon.json +0 -1
- package/base/src/pages/[...path].tsx +0 -33
- package/base/src/pages/_app.tsx +0 -11
- package/base/src/pages/_document.tsx +0 -37
- package/base/src/pages/api/[...path].js +0 -20
- package/base/src/styles/globals.css +0 -48
- package/base/tsconfig.json +0 -5
- package/src/index.js +0 -30
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
3
|
-
* This devtool is neither made for production nor for readable output files.
|
|
4
|
-
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
5
|
-
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
6
|
-
* or disable the default devtool with "devtool: false".
|
|
7
|
-
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
8
|
-
*/
|
|
9
|
-
(() => {
|
|
10
|
-
var exports = {};
|
|
11
|
-
exports.id = "pages/_document";
|
|
12
|
-
exports.ids = ["pages/_document"];
|
|
13
|
-
exports.modules = {
|
|
14
|
-
|
|
15
|
-
/***/ "../../../node_modules/next/dist/client/head-manager.js":
|
|
16
|
-
/*!**************************************************************!*\
|
|
17
|
-
!*** ../../../node_modules/next/dist/client/head-manager.js ***!
|
|
18
|
-
\**************************************************************/
|
|
19
|
-
/***/ ((module, exports) => {
|
|
20
|
-
|
|
21
|
-
"use strict";
|
|
22
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.isEqualNode = isEqualNode;\nexports.DOMAttributeNames = void 0;\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector(`style[data-href=\"${h.props[\"data-href\"]}\"]`)) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nexports.DOMAttributeNames = DOMAttributeNames;\nfunction reactElementToDOM({ type , props }) {\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children , dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nfunction updateElements(type, components) {\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j == null ? void 0 : (ref = j.tagName) == null ? void 0 : ref.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var ref;\n return (ref = t.parentNode) == null ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsa0JBQWUsR0FBR0csZUFBZSxDQUFDO0FBQ2xDSCxtQkFBbUIsR0FBR0ksV0FBVyxDQUFDO0FBQ2xDSix5QkFBeUIsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNuQyxTQUFTRyxlQUFlLEdBQUc7SUFDdkIsT0FBTztRQUNIRyxnQkFBZ0IsRUFBRSxJQUFJQyxHQUFHLEVBQUU7UUFDM0JDLFVBQVUsRUFBRSxDQUFDQyxJQUFJLEdBQUc7WUFDaEIsTUFBTUMsSUFBSSxHQUFHLEVBQUU7WUFDZkQsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxHQUFHO2dCQUNkLElBQ0Esb0VBQW9FO2dCQUNwRUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUssTUFBTSxJQUFJRCxDQUFDLENBQUNFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO29CQUNsRCxJQUFJQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxDQUFDLGlCQUFpQixFQUFFSixDQUFDLENBQUNFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUN0RSxPQUFPO3FCQUNWLE1BQU07d0JBQ0hGLENBQUMsQ0FBQ0UsS0FBSyxDQUFDRyxJQUFJLEdBQUdMLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNwQ0YsQ0FBQyxDQUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUdJLFNBQVMsQ0FBQztxQkFDcEM7aUJBQ0o7Z0JBQ0QsTUFBTUMsVUFBVSxHQUFHVCxJQUFJLENBQUNFLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDckNNLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDUixDQUFDLENBQUMsQ0FBQztnQkFDbkJGLElB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Y2s6Ly9wcmV2aWV3Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2hlYWQtbWFuYWdlci5qcz80NGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaW5pdEhlYWRNYW5hZ2VyO1xuZXhwb3J0cy5pc0VxdWFsTm9kZSA9IGlzRXF1YWxOb2RlO1xuZXhwb3J0cy5ET01BdHRyaWJ1dGVOYW1lcyA9IHZvaWQgMDtcbmZ1bmN0aW9uIGluaXRIZWFkTWFuYWdlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHt9O1xuICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgIGlmICgvLyBJZiB0aGUgZm9udCB0YWcgaXMgbG9hZGVkIG9ubHkgb24gY2xpZW50IG5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAvLyBpdCB3b24ndCBiZSBpbmxpbmVkLiBJbiB0aGlzIGNhc2UgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gJ2xpbmsnICYmIGgucHJvcHNbJ2RhdGEtb3B0aW1pemVkLWZvbnRzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHN0eWxlW2RhdGEtaHJlZj1cIiR7aC5wcm9wc1snZGF0YS1ocmVmJ119XCJdYCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHMuaHJlZiA9IGgucHJvcHNbJ2RhdGEtaHJlZiddO1xuICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wc1snZGF0YS1ocmVmJ10gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRhZ3NbaC50eXBlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgdGFnc1toLnR5cGVdID0gY29tcG9uZW50cztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGl0bGUgPSAnJztcbiAgICAgICAgICAgIGlmICh0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gIH0gPSB0aXRsZUNvbXBvbmVudC5wcm9wcztcbiAgICAgICAgICAgICAgICB0aXRsZSA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbignJykgOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aXRsZSAhPT0gZG9jdW1lbnQudGl0bGUpIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgJ21ldGEnLFxuICAgICAgICAgICAgICAgICdiYXNlJyxcbiAgICAgICAgICAgICAgICAnbGluaycsXG4gICAgICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAnc2NyaXB0J1xuICAgICAgICAgICAgXS5mb3JFYWNoKCh0eXBlKT0+e1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIHRhZ3NbdHlwZV0gfHwgW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuY29uc3QgRE9NQXR0cmlidXRlTmFtZXMgPSB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2ZvcicsXG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdicsXG4gICAgbm9Nb2R1bGU6ICdub01vZHVsZSdcbn07XG5leHBvcnRzLkRPTUF0dHJpYnV0ZU5hbWVzID0gRE9NQXR0cmlidXRlTmFtZXM7XG5mdW5jdGlvbiByZWFjdEVsZW1lbnRUb0RPTSh7IHR5cGUgLCBwcm9wcyAgfSkge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTtcbiAgICBmb3IoY29uc3QgcCBpbiBwcm9wcyl7XG4gICAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAocCA9PT0gJ2NoaWxkcmVuJyB8fCBwID09PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSBjb250aW51ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3QgcmVuZGVyIHVuZGVmaW5lZCBwcm9wcyB0byB0aGUgRE9NXG4gICAgICAgIGlmIChwcm9wc1twXSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgYXR0ciA9IERPTUF0dHJpYnV0ZU5hbWVzW3BdIHx8IHAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzY3JpcHQnICYmIChhdHRyID09PSAnYXN5bmMnIHx8IGF0dHIgPT09ICdkZWZlcicgfHwgYXR0ciA9PT0gJ25vTW9kdWxlJykpIHtcbiAgICAgICAgICAgIGVsW2F0dHJdID0gISFwcm9wc1twXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBwcm9wc1twXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyBjaGlsZHJlbiAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICB9ID0gcHJvcHM7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCAnJztcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gZWw7XG59XG5mdW5jdGlvbiBpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykge1xuICAgIGlmIChvbGRUYWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBuZXdUYWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub25jZSA9IG5ld1RhZy5nZXRBdHRyaWJ1dGUoJ25vbmNlJyk7XG4gICAgICAgIC8vIE9ubHkgc3RyaXAgdGhlIG5vbmNlIGlmIGBvbGRUYWdgIGhhcyBoYWQgaXQgc3RyaXBwZWQuIEFuIGVsZW1lbnQncyBub25jZSBhdHRyaWJ1dGUgd2lsbCBub3RcbiAgICAgICAgLy8gYmUgc3RyaXBwZWQgaWYgdGhlcmUgaXMgbm8gY29udGVudCBzZWN1cml0eSBwb2xpY3kgcmVzcG9uc2UgaGVhZGVyIHRoYXQgaW5jbHVkZXMgYSBub25jZS5cbiAgICAgICAgaWYgKG5vbmNlICYmICFvbGRUYWcuZ2V0QXR0cmlidXRlKCdub25jZScpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZVRhZyA9IG5ld1RhZy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICBjbG9uZVRhZy5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgJycpO1xuICAgICAgICAgICAgY2xvbmVUYWcubm9uY2UgPSBub25jZTtcbiAgICAgICAgICAgIHJldHVybiBub25jZSA9PT0gb2xkVGFnLm5vbmNlICYmIG9sZFRhZy5pc0VxdWFsTm9kZShjbG9uZVRhZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9sZFRhZy5pc0VxdWFsTm9kZShuZXdUYWcpO1xufVxuZnVuY3Rpb24gdXBkYXRlRWxlbWVudHModHlwZSwgY29tcG9uZW50cykge1xuICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gICAgY29uc3QgaGVhZENvdW50RWwgPSBoZWFkRWwucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPW5leHQtaGVhZC1jb3VudF0nKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoIWhlYWRDb3VudEVsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXYXJuaW5nOiBuZXh0LWhlYWQtY291bnQgaXMgbWlzc2luZy4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1oZWFkLWNvdW50LW1pc3NpbmcnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBoZWFkQ291bnQgPSBOdW1iZXIoaGVhZENvdW50RWwuY29udGVudCk7XG4gICAgY29uc3Qgb2xkVGFncyA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDAsIGogPSBoZWFkQ291bnRFbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBpIDwgaGVhZENvdW50OyBpKyssIGogPSAoaiA9PSBudWxsID8gdm9pZCAwIDogai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB8fCBudWxsKXtcbiAgICAgICAgdmFyIHJlZjtcbiAgICAgICAgaWYgKChqID09IG51bGwgPyB2b2lkIDAgOiAocmVmID0gai50YWdOYW1lKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLnRvTG93ZXJDYXNlKCkpID09PSB0eXBlKSB7XG4gICAgICAgICAgICBvbGRUYWdzLnB1c2goaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV3VGFncyA9IGNvbXBvbmVudHMubWFwKHJlYWN0RWxlbWVudFRvRE9NKS5maWx0ZXIoKG5ld1RhZyk9PntcbiAgICAgICAgZm9yKGxldCBrID0gMCwgbGVuID0gb2xkVGFncy5sZW5ndGg7IGsgPCBsZW47IGsrKyl7XG4gICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgaWYgKGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSkge1xuICAgICAgICAgICAgICAgIG9sZFRhZ3Muc3BsaWNlKGssIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBvbGRUYWdzLmZvckVhY2goKHQpPT57XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIHJldHVybiAocmVmID0gdC5wYXJlbnROb2RlKSA9PSBudWxsID8gdm9pZCAwIDogcmVmLnJlbW92ZUNoaWxkKHQpO1xuICAgIH0pO1xuICAgIG5ld1RhZ3MuZm9yRWFjaCgodCk9PmhlYWRFbC5pbnNlcnRCZWZvcmUodCwgaGVhZENvdW50RWwpKTtcbiAgICBoZWFkQ291bnRFbC5jb250ZW50ID0gKGhlYWRDb3VudCAtIG9sZFRhZ3MubGVuZ3RoICsgbmV3VGFncy5sZW5ndGgpLnRvU3RyaW5nKCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlYWQtbWFuYWdlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwiaW5pdEhlYWRNYW5hZ2VyIiwiaXNFcXVhbE5vZGUiLCJET01BdHRyaWJ1dGVOYW1lcyIsIm1vdW50ZWRJbnN0YW5jZXMiLCJTZXQiLCJ1cGRhdGVIZWFkIiwiaGVhZCIsInRhZ3MiLCJmb3JFYWNoIiwiaCIsInR5cGUiLCJwcm9wcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImhyZWYiLCJ1bmRlZmluZWQiLCJjb21wb25lbnRzIiwicHVzaCIsInRpdGxlQ29tcG9uZW50IiwidGl0bGUiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJ1cGRhdGVFbGVtZW50cyIsImFjY2VwdENoYXJzZXQiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwibm9Nb2R1bGUiLCJyZWFjdEVsZW1lbnRUb0RPTSIsImVsIiwiY3JlYXRlRWxlbWVudCIsInAiLCJoYXNPd25Qcm9wZXJ0eSIsImF0dHIiLCJ0b0xvd2VyQ2FzZSIsInNldEF0dHJpYnV0ZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJvbGRUYWciLCJuZXdUYWciLCJIVE1MRWxlbWVudCIsIm5vbmNlIiwiZ2V0QXR0cmlidXRlIiwiY2xvbmVUYWciLCJjbG9uZU5vZGUiLCJoZWFkRWwiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImhlYWRDb3VudEVsIiwicHJvY2VzcyIsImNvbnNvbGUiLCJlcnJvciIsImhlYWRDb3VudCIsIk51bWJlciIsImNvbnRlbnQiLCJvbGRUYWdzIiwiaSIsImoiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwicmVmIiwidGFnTmFtZSIsIm5ld1RhZ3MiLCJtYXAiLCJmaWx0ZXIiLCJrIiwibGVuIiwibGVuZ3RoIiwic3BsaWNlIiwidCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImluc2VydEJlZm9yZSIsInRvU3RyaW5nIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/client/head-manager.js\n");
|
|
23
|
-
|
|
24
|
-
/***/ }),
|
|
25
|
-
|
|
26
|
-
/***/ "../../../node_modules/next/dist/client/request-idle-callback.js":
|
|
27
|
-
/*!***********************************************************************!*\
|
|
28
|
-
!*** ../../../node_modules/next/dist/client/request-idle-callback.js ***!
|
|
29
|
-
\***********************************************************************/
|
|
30
|
-
/***/ ((module, exports) => {
|
|
31
|
-
|
|
32
|
-
"use strict";
|
|
33
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.cancelIdleCallback = exports.requestIdleCallback = void 0;\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nexports.requestIdleCallback = requestIdleCallback;\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nexports.cancelIdleCallback = cancelIdleCallback;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsMEJBQTBCLEdBQUdBLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLE1BQU1HLG1CQUFtQixHQUFHLE9BQU9DLElBQUksS0FBSyxXQUFXLElBQUlBLElBQUksQ0FBQ0QsbUJBQW1CLElBQUlDLElBQUksQ0FBQ0QsbUJBQW1CLENBQUNFLElBQUksQ0FBQ0MsTUFBTSxDQUFDLElBQUksU0FBU0MsRUFBRSxFQUFFO0lBQ3pJLElBQUlDLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFHLEVBQUU7SUFDdEIsT0FBT0MsVUFBVSxDQUFDLFdBQVc7UUFDekJKLEVBQUUsQ0FBQztZQUNDSyxVQUFVLEVBQUUsS0FBSztZQUNqQkMsYUFBYSxFQUFFLFdBQVc7Z0JBQ3RCLE9BQU9DLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQ04sSUFBSSxDQUFDQyxHQUFHLEVBQUUsR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRDtTQUNKLENBQUMsQ0FBQztLQUNOLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDVDtBQUNEUiwyQkFBMkIsR0FBR0csbUJBQW1CLENBQUM7QUFDbEQsTUFBTUQsa0JBQWtCLEdBQUcsT0FBT0UsSUFBSSxLQUFLLFdBQVcsSUFBSUEsSUFBSSxDQUFDRixrQkFBa0IsSUFBSUUsSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0csSUFBSSxDQUFDQyxNQUFNLENBQUMsSUFBSSxTQUFTVSxFQUFFLEVBQUU7SUFDdEksT0FBT0MsWUFBWSxDQUFDRCxFQUFFLENBQUMsQ0FBQztDQUMzQjtBQUNEaEIsMEJBQTBCLEdBQUdFLGtCQUFrQixDQUFDO0FBRWhELElBQUksQ0FBQyxPQUFPRixPQUFPLENBQUNrQixPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLEtBQUssUUFBUSxJQUFJbEIsT0FBTyxDQUFDa0IsT0FBTyxLQUFLLElBQUksQ0FBRSxJQUFJLE9BQU9sQixPQUFPLENBQUNrQixPQUFPLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcktyQixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDa0IsT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFakIsS0FBSyxFQUFFLElBQUk7S0FBRSxDQUFDLENBQUM7SUFDdEVILE1BQU0sQ0FBQ3NCLE1BQU0sQ0FBQ3BCLE9BQU8sQ0FBQ2tCLE9BQU8sRUFBRWxCLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDcUIsTUFBTSxDQUFDckIsT0FBTyxHQUFHQSxPQUFPLENBQUNrQixPQUFPLENBQUM7Q0FDbEMsQ0FFRCxpREFBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlcXVlc3QtaWRsZS1jYWxsYmFjay5qcz9kNGU3Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBleHBvcnRzLnJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB2b2lkIDA7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayAmJiBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGNiKSB7XG4gICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgY2Ioe1xuICAgICAgICAgICAgZGlkVGltZW91dDogZmFsc2UsXG4gICAgICAgICAgICB0aW1lUmVtYWluaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgNTAgLSAoRGF0ZS5ub3coKSAtIHN0YXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIDEpO1xufTtcbmV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHJlcXVlc3RJZGxlQ2FsbGJhY2s7XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2sgJiYgc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2suYmluZCh3aW5kb3cpIHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dChpZCk7XG59O1xuZXhwb3J0cy5jYW5jZWxJZGxlQ2FsbGJhY2sgPSBjYW5jZWxJZGxlQ2FsbGJhY2s7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/client/request-idle-callback.js\n");
|
|
34
|
-
|
|
35
|
-
/***/ }),
|
|
36
|
-
|
|
37
|
-
/***/ "../../../node_modules/next/dist/client/script.js":
|
|
38
|
-
/*!********************************************************!*\
|
|
39
|
-
!*** ../../../node_modules/next/dist/client/script.js ***!
|
|
40
|
-
\********************************************************/
|
|
41
|
-
/***/ ((module, exports, __webpack_require__) => {
|
|
42
|
-
|
|
43
|
-
"use strict";
|
|
44
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.handleClientScriptLoad = handleClientScriptLoad;\nexports.initScriptLoader = initScriptLoader;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../shared/lib/head-manager-context\");\nvar _headManager = __webpack_require__(/*! ./head-manager */ \"../../../node_modules/next/dist/client/head-manager.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"../../../node_modules/next/dist/client/request-idle-callback.js\");\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\", \n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , dangerouslySetInnerHTML , children =\"\" , strategy =\"afterInteractive\" , onError , } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // Execute onLoad since the script loading has begun\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (src) {\n ScriptCache.set(src, loadPromise);\n }\n LoadCache.add(cacheKey);\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n } else if (src) {\n el.src = src;\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headManager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy =\"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'), \n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { src =\"\" , onLoad =()=>{} , strategy =\"afterInteractive\" , onError } = props, restProps = _objectWithoutPropertiesLoose(props, [\n \"src\",\n \"onLoad\",\n \"strategy\",\n \"onError\"\n ]);\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr } = (0, _react).useContext(_headManagerContext.HeadManagerContext);\n (0, _react).useEffect(()=>{\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n _extends({\n src,\n onLoad,\n onError\n }, restProps), \n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(restProps.id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n return null;\n}\nvar _default = Script;\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvc2NyaXB0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csS0FBSyxFQUFFLElBQUk7Q0FDZCxFQUFDLENBQUM7QUFDSEQsOEJBQThCLEdBQUdFLHNCQUFzQixDQUFDO0FBQ3hERix3QkFBd0IsR0FBR0csZ0JBQWdCLENBQUM7QUFDNUNILGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSUssTUFBTSxHQUFHQyx1QkFBdUIsQ0FBQ0MsbUJBQU8sQ0FBQyxvQkFBTyxDQUFDLENBQUM7QUFDdEQsSUFBSUMsbUJBQW1CLEdBQUdELG1CQUFPLENBQUMsOEVBQW9DLENBQUM7QUFDdkUsSUFBSUUsWUFBWSxHQUFHRixtQkFBTyxDQUFDLDhFQUFnQixDQUFDO0FBQzVDLElBQUlHLG9CQUFvQixHQUFHSCxtQkFBTyxDQUFDLGdHQUF5QixDQUFDO0FBQzdELFNBQVNJLFFBQVEsR0FBRztJQUNoQkEsUUFBUSxHQUFHYixNQUFNLENBQUNjLE1BQU0sSUFBSSxTQUFTQyxNQUFNLEVBQUU7UUFDekMsSUFBSSxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdDLFNBQVMsQ0FBQ0MsTUFBTSxFQUFFRixDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJRyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0QsQ0FBQyxDQUFDO1lBQ3pCLElBQUksSUFBSUksR0FBRyxJQUFJRCxNQUFNLENBQUM7Z0JBQ2xCLElBQUluQixNQUFNLENBQUNxQixTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixNQUFNLEVBQUVDLEdBQUcsQ0FBQyxFQUFFO29CQUNuREwsTUFBTSxDQUFDSyxHQUFHLENBQUMsR0FBR0QsTUFBTSxDQUFDQyxHQUFHLENBQUMsQ0FBQztpQkFDN0I7YUFDSjtTQUNKO1FBQ0QsT0FBT0wsTUFBTSxDQUFDO0tBQ2pCLENBQUM7SUFDRixPQUFPRixRQUFRLENB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LElBQUl3RCxRQUFRLEdBQUdSLE1BQU07QUFDckI5RixrQkFBZSxHQUFHc0csUUFBUSxDQUFDO0FBRTNCLElBQUksQ0FBQyxPQUFPdEcsT0FBTyxDQUFDSSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9KLE9BQU8sQ0FBQ0ksT0FBTyxLQUFLLFFBQVEsSUFBSUosT0FBTyxDQUFDSSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT0osT0FBTyxDQUFDSSxPQUFPLENBQUN1QixVQUFVLEtBQUssV0FBVyxFQUFFO0lBQ3JLN0IsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQ0ksT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFSCxLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDYyxNQUFNLENBQUNaLE9BQU8sQ0FBQ0ksT0FBTyxFQUFFSixPQUFPLENBQUMsQ0FBQztJQUN4Q3VHLE1BQU0sQ0FBQ3ZHLE9BQU8sR0FBR0EsT0FBTyxDQUFDSSxPQUFPLENBQUM7Q0FDbEMsQ0FFRCxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NjcmlwdC5qcz84ZDhiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5oYW5kbGVDbGllbnRTY3JpcHRMb2FkID0gaGFuZGxlQ2xpZW50U2NyaXB0TG9hZDtcbmV4cG9ydHMuaW5pdFNjcmlwdExvYWRlciA9IGluaXRTY3JpcHRMb2FkZXI7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfaGVhZE1hbmFnZXJDb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaGVhZC1tYW5hZ2VyLWNvbnRleHRcIik7XG52YXIgX2hlYWRNYW5hZ2VyID0gcmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpO1xudmFyIF9yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gICAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHRhcmdldCkge1xuICAgICAgICBmb3IodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IodmFyIGtleSBpbiBzb3VyY2Upe1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcbiAgICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG4gICAgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbiAgICBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlO1xuICAgIH07XG4gICAgcmV0dXJuIGNhY2hlO1xufVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7XG4gICAgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7XG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQob2JqKTtcbiAgICB9XG4gICAgdmFyIG5ld09iaiA9IHt9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBmb3IodmFyIGtleSBpbiBvYmope1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgICB2YXIgdGFyZ2V0ID0ge307XG4gICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICAgIHZhciBrZXksIGk7XG4gICAgZm9yKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5jb25zdCBTY3JpcHRDYWNoZSA9IG5ldyBNYXAoKTtcbmNvbnN0IExvYWRDYWNoZSA9IG5ldyBTZXQoKTtcbmNvbnN0IGlnbm9yZVByb3BzID0gW1xuICAgICdvbkxvYWQnLFxuICAgICdkYW5nZXJvdXNseVNldElubmVySFRNTCcsXG4gICAgJ2NoaWxkcmVuJyxcbiAgICAnb25FcnJvcicsXG4gICAgJ3N0cmF0ZWd5JywgXG5dO1xuY29uc3QgbG9hZFNjcmlwdCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IHNyYyAsIGlkICwgb25Mb2FkID0oKT0+e30gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAsIGNoaWxkcmVuID0nJyAsIHN0cmF0ZWd5ID0nYWZ0ZXJJbnRlcmFjdGl2ZScgLCBvbkVycm9yICwgIH0gPSBwcm9wcztcbiAgICBjb25zdCBjYWNoZUtleSA9IGlkIHx8IHNyYztcbiAgICAvLyBTY3JpcHQgaGFzIGFscmVhZHkgbG9hZGVkXG4gICAgaWYgKGNhY2hlS2V5ICYmIExvYWRDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ29udGVudHMgb2YgdGhpcyBzY3JpcHQgYXJlIGFscmVhZHkgbG9hZGluZy9sb2FkZWRcbiAgICBpZiAoU2NyaXB0Q2FjaGUuaGFzKHNyYykpIHtcbiAgICAgICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgICAgIC8vIEV4ZWN1dGUgb25Mb2FkIHNpbmNlIHRoZSBzY3JpcHQgbG9hZGluZyBoYXMgYmVndW5cbiAgICAgICAgU2NyaXB0Q2FjaGUuZ2V0KHNyYykudGhlbihvbkxvYWQsIG9uRXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgY29uc3QgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgaWYgKG9uTG9hZCkge1xuICAgICAgICAgICAgICAgIG9uTG9hZC5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc3JjKSB7XG4gICAgICAgIFNjcmlwdENhY2hlLnNldChzcmMsIGxvYWRQcm9taXNlKTtcbiAgICB9XG4gICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCAnJztcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6ICcnO1xuICAgIH0gZWxzZSBpZiAoc3JjKSB7XG4gICAgICAgIGVsLnNyYyA9IHNyYztcbiAgICB9XG4gICAgZm9yIChjb25zdCBbaywgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSl7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGlnbm9yZVByb3BzLmluY2x1ZGVzKGspKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhdHRyID0gX2hlYWRNYW5hZ2VyLkRPTUF0dHJpYnV0ZU5hbWVzW2tdIHx8IGsudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnd29ya2VyJykge1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9wYXJ0eXRvd24nKTtcbiAgICB9XG4gICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLW5zY3JpcHQnLCBzdHJhdGVneSk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCk7XG59O1xuZnVuY3Rpb24gaGFuZGxlQ2xpZW50U2NyaXB0TG9hZChwcm9wcykge1xuICAgIGNvbnN0IHsgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAgfSA9IHByb3BzO1xuICAgIGlmIChzdHJhdGVneSA9PT0gJ2xhenlPbmxvYWQnKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCk9PntcbiAgICAgICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+bG9hZFNjcmlwdChwcm9wcykpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb2FkTGF6eVNjcmlwdChwcm9wcykge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+bG9hZFNjcmlwdChwcm9wcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCk9PntcbiAgICAgICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+bG9hZFNjcmlwdChwcm9wcykpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKSB7XG4gICAgY29uc3Qgc2NyaXB0cyA9IFtcbiAgICAgICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbnNjcmlwdD1cImJlZm9yZUludGVyYWN0aXZlXCJdJyksXG4gICAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5zY3JpcHQ9XCJiZWZvcmVQYWdlUmVuZGVyXCJdJyksIFxuICAgIF07XG4gICAgc2NyaXB0cy5mb3JFYWNoKChzY3JpcHQpPT57XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gc2NyaXB0LmlkIHx8IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgICBMb2FkQ2FjaGUuYWRkKGNhY2hlS2V5KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGluaXRTY3JpcHRMb2FkZXIoc2NyaXB0TG9hZGVySXRlbXMpIHtcbiAgICBzY3JpcHRMb2FkZXJJdGVtcy5mb3JFYWNoKGhhbmRsZUNsaWVudFNjcmlwdExvYWQpO1xuICAgIGFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSgpO1xufVxuZnVuY3Rpb24gU2NyaXB0KHByb3BzKSB7XG4gICAgY29uc3QgeyBzcmMgPScnICwgb25Mb2FkID0oKT0+e30gLCBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICwgb25FcnJvciAgfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgW1xuICAgICAgICBcInNyY1wiLFxuICAgICAgICBcIm9uTG9hZFwiLFxuICAgICAgICBcInN0cmF0ZWd5XCIsXG4gICAgICAgIFwib25FcnJvclwiXG4gICAgXSk7XG4gICAgLy8gQ29udGV4dCBpcyBhdmFpbGFibGUgb25seSBkdXJpbmcgU1NSXG4gICAgY29uc3QgeyB1cGRhdGVTY3JpcHRzICwgc2NyaXB0cyAsIGdldElzU3NyICB9ID0gKDAsIF9yZWFjdCkudXNlQ29udGV4dChfaGVhZE1hbmFnZXJDb250ZXh0LkhlYWRNYW5hZ2VyQ29udGV4dCk7XG4gICAgKDAsIF9yZWFjdCkudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChzdHJhdGVneSA9PT0gJ2FmdGVySW50ZXJhY3RpdmUnKSB7XG4gICAgICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdHJhdGVneSA9PT0gJ2xhenlPbmxvYWQnKSB7XG4gICAgICAgICAgICBsb2FkTGF6eVNjcmlwdChwcm9wcyk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByb3BzLFxuICAgICAgICBzdHJhdGVneVxuICAgIF0pO1xuICAgIGlmIChzdHJhdGVneSA9PT0gJ2JlZm9yZUludGVyYWN0aXZlJyB8fCBzdHJhdGVneSA9PT0gJ3dvcmtlcicpIHtcbiAgICAgICAgaWYgKHVwZGF0ZVNjcmlwdHMpIHtcbiAgICAgICAgICAgIHNjcmlwdHNbc3RyYXRlZ3ldID0gKHNjcmlwdHNbc3RyYXRlZ3ldIHx8IFtdKS5jb25jYXQoW1xuICAgICAgICAgICAgICAgIF9leHRlbmRzKHtcbiAgICAgICAgICAgICAgICAgICAgc3JjLFxuICAgICAgICAgICAgICAgICAgICBvbkxvYWQsXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3JcbiAgICAgICAgICAgICAgICB9LCByZXN0UHJvcHMpLCBcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgdXBkYXRlU2NyaXB0cyhzY3JpcHRzKTtcbiAgICAgICAgfSBlbHNlIGlmIChnZXRJc1NzciAmJiBnZXRJc1NzcigpKSB7XG4gICAgICAgICAgICAvLyBTY3JpcHQgaGFzIGFscmVhZHkgbG9hZGVkIGR1cmluZyBTU1JcbiAgICAgICAgICAgIExvYWRDYWNoZS5hZGQocmVzdFByb3BzLmlkIHx8IHNyYyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgIWdldElzU3NyKCkpIHtcbiAgICAgICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxudmFyIF9kZWZhdWx0ID0gU2NyaXB0O1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjcmlwdC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJoYW5kbGVDbGllbnRTY3JpcHRMb2FkIiwiaW5pdFNjcmlwdExvYWRlciIsImRlZmF1bHQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaGVhZE1hbmFnZXJDb250ZXh0IiwiX2hlYWRNYW5hZ2VyIiwiX3JlcXVlc3RJZGxlQ2FsbGJhY2siLCJfZXh0ZW5kcyIsImFzc2lnbiIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwic2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJrZXlzIiwiaW5kZXhPZiIsIlNjcmlwdENhY2hlIiwiTWFwIiwiTG9hZENhY2hlIiwiU2V0IiwiaWdub3JlUHJvcHMiLCJsb2FkU2NyaXB0IiwicHJvcHMiLCJzcmMiLCJpZCIsIm9uTG9hZCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdHJhdGVneSIsIm9uRXJyb3IiLCJjYWNoZUtleSIsImFkZCIsInRoZW4iLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImNhdGNoIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiayIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImF0dHIiLCJET01BdHRyaWJ1dGVOYW1lcyIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwid2luZG93IiwicmVxdWVzdElkbGVDYWxsYmFjayIsImxvYWRMYXp5U2NyaXB0IiwicmVhZHlTdGF0ZSIsImFkZEJlZm9yZUludGVyYWN0aXZlVG9DYWNoZSIsInNjcmlwdHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInNjcmlwdCIsImdldEF0dHJpYnV0ZSIsInNjcmlwdExvYWRlckl0ZW1zIiwiU2NyaXB0IiwicmVzdFByb3BzIiwidXBkYXRlU2NyaXB0cyIsImdldElzU3NyIiwidXNlQ29udGV4dCIsIkhlYWRNYW5hZ2VyQ29udGV4dCIsInVzZUVmZmVjdCIsImNvbmNhdCIsIl9kZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/client/script.js\n");
|
|
45
|
-
|
|
46
|
-
/***/ }),
|
|
47
|
-
|
|
48
|
-
/***/ "../../../node_modules/next/dist/pages/_document.js":
|
|
49
|
-
/*!**********************************************************!*\
|
|
50
|
-
!*** ../../../node_modules/next/dist/pages/_document.js ***!
|
|
51
|
-
\**********************************************************/
|
|
52
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
53
|
-
|
|
54
|
-
"use strict";
|
|
55
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Html = Html;\nexports.Main = Main;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _constants = __webpack_require__(/*! ../shared/lib/constants */ \"../shared/lib/constants\");\nvar _getPageFiles = __webpack_require__(/*! ../server/get-page-files */ \"../server/get-page-files\");\nvar _utils = __webpack_require__(/*! ../server/utils */ \"../server/utils\");\nvar _htmlescape = __webpack_require__(/*! ../server/htmlescape */ \"../server/htmlescape\");\nvar _script = _interopRequireDefault(__webpack_require__(/*! ../client/script */ \"../../../node_modules/next/dist/client/script.js\"));\nvar _isError = _interopRequireDefault(__webpack_require__(/*! ../lib/is-error */ \"../../../node_modules/next/dist/lib/is-error.js\"));\nvar _htmlContext = __webpack_require__(/*! ../shared/lib/html-context */ \"../shared/lib/html-context\");\nclass Document extends _react.Component {\n /**\n * `getInitialProps` hook returns the context object with the addition of `renderPage`.\n * `renderPage` callback executes `React` rendering logic synchronously to support server-rendering wrappers\n */ static getInitialProps(ctx) {\n return ctx.defaultGetInitialProps(ctx);\n }\n render() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n }\n}\nexports[\"default\"] = Document;\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction getDocumentFiles(buildManifest, pathname, inAmpMode) {\n const sharedFiles = (0, _getPageFiles).getPageFiles(buildManifest, \"/_app\");\n const pageFiles = inAmpMode ? [] : (0, _getPageFiles).getPageFiles(buildManifest, pathname);\n return {\n sharedFiles,\n pageFiles,\n allFiles: [\n ...new Set([\n ...sharedFiles,\n ...pageFiles\n ])\n ]\n };\n}\nfunction getPolyfillScripts(context, props) {\n // polyfills.js has to be rendered as nomodule without async\n // It also has to be the first script to load\n const { assetPrefix , buildManifest , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith(\".js\") && !polyfill.endsWith(\".module.js\")).map((polyfill)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: polyfill,\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin,\n noModule: true,\n src: `${assetPrefix}/_next/${polyfill}${devOnlyCacheBusterQueryString}`\n }));\n}\nfunction hasComponentProps(child) {\n return !!child && !!child.props;\n}\nfunction handleDocumentScriptLoaderItems(scriptLoader, __NEXT_DATA__, props) {\n var ref, ref1, ref2, ref3;\n if (!props.children) return;\n const scriptLoaderItems = [];\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n const headChildren = (ref = children.find((child)=>child.type === Head)) == null ? void 0 : (ref1 = ref.props) == null ? void 0 : ref1.children;\n const bodyChildren = (ref2 = children.find((child)=>child.type === \"body\")) == null ? void 0 : (ref3 = ref2.props) == null ? void 0 : ref3.children;\n // Scripts with beforeInteractive can be placed inside Head or <body> so children of both needs to be traversed\n const combinedChildren = [\n ...Array.isArray(headChildren) ? headChildren : [\n headChildren\n ],\n ...Array.isArray(bodyChildren) ? bodyChildren : [\n bodyChildren\n ], \n ];\n _react.default.Children.forEach(combinedChildren, (child)=>{\n if (!child) return;\n if (child.type === _script.default) {\n if (child.props.strategy === \"beforeInteractive\") {\n scriptLoader.beforeInteractive = (scriptLoader.beforeInteractive || []).concat([\n {\n ...child.props\n }, \n ]);\n return;\n } else if ([\n \"lazyOnload\",\n \"afterInteractive\",\n \"worker\"\n ].includes(child.props.strategy)) {\n scriptLoaderItems.push(child.props);\n return;\n }\n }\n });\n __NEXT_DATA__.scriptLoader = scriptLoaderItems;\n}\nfunction getPreNextWorkerScripts(context, props) {\n const { assetPrefix , scriptLoader , crossOrigin , nextScriptWorkers } = context;\n // disable `nextScriptWorkers` in edge runtime\n if (!nextScriptWorkers || \"nodejs\" === \"edge\") return null;\n try {\n let { partytownSnippet } = require(\"@builder.io/partytown/integration\");\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n // Check to see if the user has defined their own Partytown configuration\n const userDefinedConfig = children.find((child)=>{\n var ref, ref4;\n return hasComponentProps(child) && (child == null ? void 0 : (ref = child.props) == null ? void 0 : (ref4 = ref.dangerouslySetInnerHTML) == null ? void 0 : ref4.__html.length) && \"data-partytown-config\" in child.props;\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !userDefinedConfig && /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown-config\": \"\",\n dangerouslySetInnerHTML: {\n __html: `\n partytown = {\n lib: \"${assetPrefix}/_next/static/~partytown/\"\n };\n `\n }\n }), /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown\": \"\",\n dangerouslySetInnerHTML: {\n __html: partytownSnippet()\n }\n }), (scriptLoader.worker || []).map((file, index)=>{\n const { strategy , src , children: scriptChildren , dangerouslySetInnerHTML , ...scriptProps } = file;\n let srcProps = {};\n if (src) {\n // Use external src if provided\n srcProps.src = src;\n } else if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n // Embed inline script if provided with dangerouslySetInnerHTML\n srcProps.dangerouslySetInnerHTML = {\n __html: dangerouslySetInnerHTML.__html\n };\n } else if (scriptChildren) {\n // Embed inline script if provided with children\n srcProps.dangerouslySetInnerHTML = {\n __html: typeof scriptChildren === \"string\" ? scriptChildren : Array.isArray(scriptChildren) ? scriptChildren.join(\"\") : \"\"\n };\n } else {\n throw new Error(\"Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script\");\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, srcProps, scriptProps, {\n type: \"text/partytown\",\n key: src || index,\n nonce: props.nonce,\n \"data-nscript\": \"worker\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n }));\n } catch (err) {\n if ((0, _isError).default(err) && err.code !== \"MODULE_NOT_FOUND\") {\n console.warn(`Warning: ${err.message}`);\n }\n return null;\n }\n}\nfunction getPreNextScripts(context, props) {\n const { scriptLoader , disableOptimizedLoading , crossOrigin } = context;\n const webWorkerScripts = getPreNextWorkerScripts(context, props);\n const beforeInteractiveScripts = (scriptLoader.beforeInteractive || []).filter((script)=>script.src).map((file, index)=>{\n const { strategy , ...scriptProps } = file;\n var _defer;\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n key: scriptProps.src || index,\n defer: (_defer = scriptProps.defer) != null ? _defer : !disableOptimizedLoading,\n nonce: props.nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, webWorkerScripts, beforeInteractiveScripts);\n}\nfunction getDynamicChunks(context, props, files) {\n const { dynamicImports , assetPrefix , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\") || files.allFiles.includes(file)) return null;\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\nfunction getScripts(context, props, files) {\n var ref;\n const { assetPrefix , buildManifest , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n const normalScripts = files.allFiles.filter((file)=>file.endsWith(\".js\"));\n const lowPriorityScripts = (ref = buildManifest.lowPriorityFiles) == null ? void 0 : ref.filter((file)=>file.endsWith(\".js\"));\n return [\n ...normalScripts,\n ...lowPriorityScripts\n ].map((file)=>{\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\n// Add a special property to the built-in `Document` component so later we can\n// identify if a user customized `Document` is used or not.\nconst InternalFunctionDocument = function InternalFunctionDocument() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n};\nDocument[_constants.NEXT_BUILTIN_DOCUMENT] = InternalFunctionDocument;\nfunction Html(props) {\n const { inAmpMode , docComponentsRendered , locale , scriptLoader , __NEXT_DATA__ , } = (0, _react).useContext(_htmlContext.HtmlContext);\n docComponentsRendered.Html = true;\n handleDocumentScriptLoaderItems(scriptLoader, __NEXT_DATA__, props);\n return /*#__PURE__*/ _react.default.createElement(\"html\", Object.assign({}, props, {\n lang: props.lang || locale || undefined,\n amp: inAmpMode ? \"\" : undefined,\n \"data-ampdevmode\": inAmpMode && \"development\" !== \"production\" ? \"\" : undefined\n }));\n}\nfunction AmpStyles({ styles }) {\n if (!styles) return null;\n // try to parse styles from fragment for backwards compat\n const curStyles = Array.isArray(styles) ? styles : [];\n if (styles.props && Array.isArray(styles.props.children)) {\n const hasStyles = (el)=>{\n var ref, ref5;\n return el == null ? void 0 : (ref = el.props) == null ? void 0 : (ref5 = ref.dangerouslySetInnerHTML) == null ? void 0 : ref5.__html;\n };\n // @ts-ignore Property 'props' does not exist on type ReactElement\n styles.props.children.forEach((child)=>{\n if (Array.isArray(child)) {\n child.forEach((el)=>hasStyles(el) && curStyles.push(el));\n } else if (hasStyles(child)) {\n curStyles.push(child);\n }\n });\n }\n /* Add custom styles before AMP styles to prevent accidental overrides */ return /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-custom\": \"\",\n dangerouslySetInnerHTML: {\n __html: curStyles.map((style)=>style.props.dangerouslySetInnerHTML.__html).join(\"\").replace(/\\/\\*# sourceMappingURL=.*\\*\\//g, \"\").replace(/\\/\\*@ sourceURL=.*?\\*\\//g, \"\")\n }\n });\n}\nclass Head extends _react.Component {\n static contextType = _htmlContext.HtmlContext;\n getCssLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , dynamicImports , crossOrigin , optimizeCss , optimizeFonts , } = this.context;\n const cssFiles = files.allFiles.filter((f)=>f.endsWith(\".css\"));\n const sharedFiles = new Set(files.sharedFiles);\n // Unmanaged files are CSS files that will be handled directly by the\n // webpack runtime (`mini-css-extract-plugin`).\n let unmangedFiles = new Set([]);\n let dynamicCssFiles = Array.from(new Set(dynamicImports.filter((file)=>file.endsWith(\".css\"))));\n if (dynamicCssFiles.length) {\n const existing = new Set(cssFiles);\n dynamicCssFiles = dynamicCssFiles.filter((f)=>!(existing.has(f) || sharedFiles.has(f)));\n unmangedFiles = new Set(dynamicCssFiles);\n cssFiles.push(...dynamicCssFiles);\n }\n let cssLinkElements = [];\n cssFiles.forEach((file)=>{\n const isSharedFile = sharedFiles.has(file);\n if (!optimizeCss) {\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: `${file}-preload`,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"style\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }));\n }\n const isUnmanagedFile = unmangedFiles.has(file);\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"stylesheet\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-n-g\": isUnmanagedFile ? undefined : isSharedFile ? \"\" : undefined,\n \"data-n-p\": isUnmanagedFile ? undefined : isSharedFile ? undefined : \"\"\n }));\n });\n if (false) {}\n return cssLinkElements.length === 0 ? null : cssLinkElements;\n }\n getPreloadDynamicChunks() {\n const { dynamicImports , assetPrefix , devOnlyCacheBusterQueryString , crossOrigin , } = this.context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\")) {\n return null;\n }\n return /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"preload\",\n key: file,\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n });\n }) // Filter out nulled scripts\n .filter(Boolean);\n }\n getPreloadMainLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , scriptLoader , crossOrigin , } = this.context;\n const preloadFiles = files.allFiles.filter((file)=>{\n return file.endsWith(\".js\");\n });\n return [\n ...(scriptLoader.beforeInteractive || []).map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file.src,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: file.src,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })),\n ...preloadFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })), \n ];\n }\n getBeforeInteractiveInlineScripts() {\n const { scriptLoader } = this.context;\n const { nonce , crossOrigin } = this.props;\n return (scriptLoader.beforeInteractive || []).filter((script)=>!script.src && (script.dangerouslySetInnerHTML || script.children)).map((file, index)=>{\n const { strategy , children , dangerouslySetInnerHTML , src , ...scriptProps } = file;\n let html = \"\";\n if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n html = dangerouslySetInnerHTML.__html;\n } else if (children) {\n html = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n dangerouslySetInnerHTML: {\n __html: html\n },\n key: scriptProps.id || index,\n nonce: nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: crossOrigin || undefined\n }));\n });\n }\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n makeStylesheetInert(node) {\n return _react.default.Children.map(node, (c)=>{\n var ref8, ref6;\n if ((c == null ? void 0 : c.type) === \"link\" && (c == null ? void 0 : (ref8 = c.props) == null ? void 0 : ref8.href) && _constants.OPTIMIZED_FONT_PROVIDERS.some(({ url })=>{\n var ref, ref7;\n return c == null ? void 0 : (ref = c.props) == null ? void 0 : (ref7 = ref.href) == null ? void 0 : ref7.startsWith(url);\n })) {\n const newProps = {\n ...c.props || {},\n \"data-href\": c.props.href,\n href: undefined\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n } else if (c == null ? void 0 : (ref6 = c.props) == null ? void 0 : ref6.children) {\n const newProps1 = {\n ...c.props || {},\n children: this.makeStylesheetInert(c.props.children)\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps1);\n }\n return c;\n }).filter(Boolean);\n }\n render() {\n const { styles , ampPath , inAmpMode , hybridAmp , canonicalBase , __NEXT_DATA__ , dangerousAsPath , headTags , unstable_runtimeJS , unstable_JsPreload , disableOptimizedLoading , optimizeCss , optimizeFonts , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n const disableJsPreload = unstable_JsPreload === false || !disableOptimizedLoading;\n this.context.docComponentsRendered.Head = true;\n let { head } = this.context;\n let cssPreloads = [];\n let otherHeadElements = [];\n if (head) {\n head.forEach((c)=>{\n if (c && c.type === \"link\" && c.props[\"rel\"] === \"preload\" && c.props[\"as\"] === \"style\") {\n cssPreloads.push(c);\n } else {\n c && otherHeadElements.push(c);\n }\n });\n head = cssPreloads.concat(otherHeadElements);\n }\n let children = _react.default.Children.toArray(this.props.children).filter(Boolean);\n // show a warning if Head contains <title> (only in development)\n if (true) {\n children = _react.default.Children.map(children, (child)=>{\n var ref;\n const isReactHelmet = child == null ? void 0 : (ref = child.props) == null ? void 0 : ref[\"data-react-helmet\"];\n if (!isReactHelmet) {\n var ref9;\n if ((child == null ? void 0 : child.type) === \"title\") {\n console.warn(\"Warning: <title> should not be used in _document.js's <Head>. https://nextjs.org/docs/messages/no-document-title\");\n } else if ((child == null ? void 0 : child.type) === \"meta\" && (child == null ? void 0 : (ref9 = child.props) == null ? void 0 : ref9.name) === \"viewport\") {\n console.warn(\"Warning: viewport meta tags should not be used in _document.js's <Head>. https://nextjs.org/docs/messages/no-document-viewport-meta\");\n }\n }\n return child;\n });\n if (this.props.crossOrigin) console.warn(\"Warning: `Head` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n if (false) {}\n let hasAmphtmlRel = false;\n let hasCanonicalRel = false;\n // show warning and remove conflicting amp head tags\n head = _react.default.Children.map(head || [], (child)=>{\n if (!child) return child;\n const { type , props } = child;\n if (inAmpMode) {\n let badProp = \"\";\n if (type === \"meta\" && props.name === \"viewport\") {\n badProp = 'name=\"viewport\"';\n } else if (type === \"link\" && props.rel === \"canonical\") {\n hasCanonicalRel = true;\n } else if (type === \"script\") {\n // only block if\n // 1. it has a src and isn't pointing to ampproject's CDN\n // 2. it is using dangerouslySetInnerHTML without a type or\n // a type of text/javascript\n if (props.src && props.src.indexOf(\"ampproject\") < -1 || props.dangerouslySetInnerHTML && (!props.type || props.type === \"text/javascript\")) {\n badProp = \"<script\";\n Object.keys(props).forEach((prop)=>{\n badProp += ` ${prop}=\"${props[prop]}\"`;\n });\n badProp += \"/>\";\n }\n }\n if (badProp) {\n console.warn(`Found conflicting amp tag \"${child.type}\" with conflicting prop ${badProp} in ${__NEXT_DATA__.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`);\n return null;\n }\n } else {\n // non-amp mode\n if (type === \"link\" && props.rel === \"amphtml\") {\n hasAmphtmlRel = true;\n }\n }\n return child;\n });\n const files = getDocumentFiles(this.context.buildManifest, this.context.__NEXT_DATA__.page, inAmpMode);\n var _nonce, _nonce1;\n return /*#__PURE__*/ _react.default.createElement(\"head\", Object.assign({}, getHeadHTMLProps(this.props)), this.context.isDevelopment && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"data-next-hide-fouc\": true,\n \"data-ampdevmode\": inAmpMode ? \"true\" : undefined,\n dangerouslySetInnerHTML: {\n __html: `body{display:none}`\n }\n }), /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-next-hide-fouc\": true,\n \"data-ampdevmode\": inAmpMode ? \"true\" : undefined\n }, /*#__PURE__*/ _react.default.createElement(\"style\", {\n dangerouslySetInnerHTML: {\n __html: `body{display:block}`\n }\n }))), head, /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-head-count\",\n content: _react.default.Children.count(head || []).toString()\n }), children, optimizeFonts && /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-font-preconnect\"\n }), inAmpMode && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width,minimum-scale=1,initial-scale=1\"\n }), !hasCanonicalRel && /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"canonical\",\n href: canonicalBase + (0, _utils).cleanAmpPath(dangerousAsPath)\n }), /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"preload\",\n as: \"script\",\n href: \"https://cdn.ampproject.org/v0.js\"\n }), /*#__PURE__*/ _react.default.createElement(AmpStyles, {\n styles: styles\n }), /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-boilerplate\": \"\",\n dangerouslySetInnerHTML: {\n __html: `body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}`\n }\n }), /*#__PURE__*/ _react.default.createElement(\"noscript\", null, /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-boilerplate\": \"\",\n dangerouslySetInnerHTML: {\n __html: `body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}`\n }\n })), /*#__PURE__*/ _react.default.createElement(\"script\", {\n async: true,\n src: \"https://cdn.ampproject.org/v0.js\"\n })), !inAmpMode && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !hasAmphtmlRel && hybridAmp && /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"amphtml\",\n href: canonicalBase + getAmpPath(ampPath, dangerousAsPath)\n }), this.getBeforeInteractiveInlineScripts(), !optimizeCss && this.getCssLinks(files), !optimizeCss && /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-n-css\": (_nonce = this.props.nonce) != null ? _nonce : \"\"\n }), !disableRuntimeJS && !disableJsPreload && this.getPreloadDynamicChunks(), !disableRuntimeJS && !disableJsPreload && this.getPreloadMainLinks(files), !disableOptimizedLoading && !disableRuntimeJS && this.getPolyfillScripts(), !disableOptimizedLoading && !disableRuntimeJS && this.getPreNextScripts(), !disableOptimizedLoading && !disableRuntimeJS && this.getDynamicChunks(files), !disableOptimizedLoading && !disableRuntimeJS && this.getScripts(files), optimizeCss && this.getCssLinks(files), optimizeCss && /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-n-css\": (_nonce1 = this.props.nonce) != null ? _nonce1 : \"\"\n }), this.context.isDevelopment && // ordering matches production\n // (by default, style-loader injects at the bottom of <head />)\n /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n id: \"__next_css__DO_NOT_USE__\"\n }), styles || null), /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, {}, ...headTags || []));\n }\n}\nexports.Head = Head;\nfunction Main() {\n const { docComponentsRendered } = (0, _react).useContext(_htmlContext.HtmlContext);\n docComponentsRendered.Main = true;\n // @ts-ignore\n return /*#__PURE__*/ _react.default.createElement(\"next-js-internal-body-render-target\", null);\n}\nclass NextScript extends _react.Component {\n static contextType = _htmlContext.HtmlContext;\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n static getInlineScriptSource(context) {\n const { __NEXT_DATA__ , largePageDataBytes } = context;\n try {\n const data = JSON.stringify(__NEXT_DATA__);\n const bytes = false ? 0 : Buffer.from(data).byteLength;\n const prettyBytes = (__webpack_require__(/*! ../lib/pretty-bytes */ \"../../../node_modules/next/dist/lib/pretty-bytes.js\")[\"default\"]);\n if (largePageDataBytes && bytes > largePageDataBytes) {\n console.warn(`Warning: data for page \"${__NEXT_DATA__.page}\" is ${prettyBytes(bytes)} which exceeds the threshold of ${prettyBytes(largePageDataBytes)}, this amount of data can reduce performance.\\nSee more info here: https://nextjs.org/docs/messages/large-page-data`);\n }\n return (0, _htmlescape).htmlEscapeJsonString(data);\n } catch (err) {\n if ((0, _isError).default(err) && err.message.indexOf(\"circular structure\") !== -1) {\n throw new Error(`Circular structure in \"getInitialProps\" result of page \"${__NEXT_DATA__.page}\". https://nextjs.org/docs/messages/circular-structure`);\n }\n throw err;\n }\n }\n render() {\n const { assetPrefix , inAmpMode , buildManifest , unstable_runtimeJS , docComponentsRendered , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n docComponentsRendered.NextScript = true;\n if (inAmpMode) {\n if (false) {}\n const ampDevFiles = [\n ...buildManifest.devFiles,\n ...buildManifest.polyfillFiles,\n ...buildManifest.ampDevFiles, \n ];\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, disableRuntimeJS ? null : /*#__PURE__*/ _react.default.createElement(\"script\", {\n id: \"__NEXT_DATA__\",\n type: \"application/json\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n dangerouslySetInnerHTML: {\n __html: NextScript.getInlineScriptSource(this.context)\n },\n \"data-ampdevmode\": true\n }), ampDevFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${file}${devOnlyCacheBusterQueryString}`,\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-ampdevmode\": true\n })));\n }\n if (true) {\n if (this.props.crossOrigin) console.warn(\"Warning: `NextScript` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n const files = getDocumentFiles(this.context.buildManifest, this.context.__NEXT_DATA__.page, inAmpMode);\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !disableRuntimeJS && buildManifest.devFiles ? buildManifest.devFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n })) : null, disableRuntimeJS ? null : /*#__PURE__*/ _react.default.createElement(\"script\", {\n id: \"__NEXT_DATA__\",\n type: \"application/json\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n dangerouslySetInnerHTML: {\n __html: NextScript.getInlineScriptSource(this.context)\n }\n }), disableOptimizedLoading && !disableRuntimeJS && this.getPolyfillScripts(), disableOptimizedLoading && !disableRuntimeJS && this.getPreNextScripts(), disableOptimizedLoading && !disableRuntimeJS && this.getDynamicChunks(files), disableOptimizedLoading && !disableRuntimeJS && this.getScripts(files));\n }\n}\nexports.NextScript = NextScript;\nfunction getAmpPath(ampPath, asPath) {\n return ampPath || `${asPath}${asPath.includes(\"?\") ? \"&\" : \"?\"}amp=1`;\n}\nfunction getHeadHTMLProps(props) {\n const { crossOrigin , nonce , ...restProps } = props;\n // This assignment is necessary for additional type checking to avoid unsupported attributes in <head>\n const headProps = restProps;\n return headProps;\n} //# sourceMappingURL=_document.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9wYWdlcy9fZG9jdW1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxZQUFZLEdBQUdFLElBQUksQ0FBQztBQUNwQkYsWUFBWSxHQUFHRyxJQUFJLENBQUM7QUFDcEJILGtCQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSUssTUFBTSxHQUFHQyx1QkFBdUIsQ0FBQ0MsbUJBQU8sQ0FBQyxvQkFBTyxDQUFDLENBQUM7QUFDdEQsSUFBSUMsVUFBVSxHQUFHRCxtQkFBTyxDQUFDLHdEQUF5QixDQUFDO0FBQ25ELElBQUlFLGFBQWEsR0FBR0YsbUJBQU8sQ0FBQywwREFBMEIsQ0FBQztBQUN2RCxJQUFJRyxNQUFNLEdBQUdILG1CQUFPLENBQUMsd0NBQWlCLENBQUM7QUFDdkMsSUFBSUksV0FBVyxHQUFHSixtQkFBTyxDQUFDLGtEQUFzQixDQUFDO0FBQ2pELElBQUlLLE9BQU8sR0FBR0Msc0JBQXNCLENBQUNOLG1CQUFPLENBQUMsMEVBQWtCLENBQUMsQ0FBQztBQUNqRSxJQUFJTyxRQUFRLEdBQUdELHNCQUFzQixDQUFDTixtQkFBTyxDQUFDLHdFQUFpQixDQUFDLENBQUM7QUFDakUsSUFBSVEsWUFBWSxHQUFHUixtQkFBTyxDQUFDLDhEQUE0QixDQUFDO0FBQ3hELE1BQU1TLFFBQVEsU0FBU1gsTUFBTSxDQUFDWSxTQUFTO0lBQ25DOzs7S0FHQyxDQUFDLE9BQU9DLGVBQWUsQ0FBQ0MsR0FBRyxFQUFFO1FBQzFCLE9BQU9BLEdBQUcsQ0FBQ0Msc0JBQXNCLENBQUNELEdBQUcsQ0FBQyxDQUFDO0tBQzFDO0lBQ0RFLE1BQU0sR0FBRztRQUNMLE9BQU8sYUFBYSxDQUFDaEIsTUFBTSxDQUFDRCxPQUFPLENBQUNrQixhQUFhLENBQUNwQixJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQ0csTUFB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QUFHTyxLQUFLLEdBQUcsR0FBRzBLLFNBQVMsRUFBRSxHQUFHckwsS0FBSztJQUNwRCxzR0FBc0c7SUFDdEcsTUFBTXNMLFNBQVMsR0FBR0QsU0FBUztJQUMzQixPQUFPQyxTQUFTLENBQUM7Q0FDcEIsQ0FFRCxxQ0FBcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvcGFnZXMvX2RvY3VtZW50LmpzPzIxZTkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkh0bWwgPSBIdG1sO1xuZXhwb3J0cy5NYWluID0gTWFpbjtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9jb25zdGFudHNcIik7XG52YXIgX2dldFBhZ2VGaWxlcyA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvZ2V0LXBhZ2UtZmlsZXNcIik7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3NlcnZlci91dGlsc1wiKTtcbnZhciBfaHRtbGVzY2FwZSA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvaHRtbGVzY2FwZVwiKTtcbnZhciBfc2NyaXB0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vY2xpZW50L3NjcmlwdFwiKSk7XG52YXIgX2lzRXJyb3IgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIikpO1xudmFyIF9odG1sQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2h0bWwtY29udGV4dFwiKTtcbmNsYXNzIERvY3VtZW50IGV4dGVuZHMgX3JlYWN0LkNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAqIGBnZXRJbml0aWFsUHJvcHNgIGhvb2sgcmV0dXJucyB0aGUgY29udGV4dCBvYmplY3Qgd2l0aCB0aGUgYWRkaXRpb24gb2YgYHJlbmRlclBhZ2VgLlxuICAgKiBgcmVuZGVyUGFnZWAgY2FsbGJhY2sgZXhlY3V0ZXMgYFJlYWN0YCByZW5kZXJpbmcgbG9naWMgc3luY2hyb25vdXNseSB0byBzdXBwb3J0IHNlcnZlci1yZW5kZXJpbmcgd3JhcHBlcnNcbiAgICovIHN0YXRpYyBnZXRJbml0aWFsUHJvcHMoY3R4KSB7XG4gICAgICAgIHJldHVybiBjdHguZGVmYXVsdEdldEluaXRpYWxQcm9wcyhjdHgpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSHRtbCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEhlYWQsIG51bGwpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChNYWluLCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KE5leHRTY3JpcHQsIG51bGwpKSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gRG9jdW1lbnQ7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEZpbGVzKGJ1aWxkTWFuaWZlc3QsIHBhdGhuYW1lLCBpbkFtcE1vZGUpIHtcbiAgICBjb25zdCBzaGFyZWRGaWxlcyA9ICgwLCBfZ2V0UGFnZUZpbGVzKS5nZXRQYWdlRmlsZXMoYnVpbGRNYW5pZmVzdCwgXCIvX2FwcFwiKTtcbiAgICBjb25zdCBwYWdlRmlsZXMgPSBpbkFtcE1vZGUgPyBbXSA6ICgwLCBfZ2V0UGFnZUZpbGVzKS5nZXRQYWdlRmlsZXMoYnVpbGRNYW5pZmVzdCwgcGF0aG5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNoYXJlZEZpbGVzLFxuICAgICAgICBwYWdlRmlsZXMsXG4gICAgICAgIGFsbEZpbGVzOiBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtcbiAgICAgICAgICAgICAgICAuLi5zaGFyZWRGaWxlcyxcbiAgICAgICAgICAgICAgICAuLi5wYWdlRmlsZXNcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF1cbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0UG9seWZpbGxTY3JpcHRzKGNvbnRleHQsIHByb3BzKSB7XG4gICAgLy8gcG9seWZpbGxzLmpzIGhhcyB0byBiZSByZW5kZXJlZCBhcyBub21vZHVsZSB3aXRob3V0IGFzeW5jXG4gICAgLy8gSXQgYWxzbyBoYXMgdG8gYmUgdGhlIGZpcnN0IHNjcmlwdCB0byBsb2FkXG4gICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGJ1aWxkTWFuaWZlc3QgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgY3Jvc3NPcmlnaW4gLCAgfSA9IGNvbnRleHQ7XG4gICAgcmV0dXJuIGJ1aWxkTWFuaWZlc3QucG9seWZpbGxGaWxlcy5maWx0ZXIoKHBvbHlmaWxsKT0+cG9seWZpbGwuZW5kc1dpdGgoXCIuanNcIikgJiYgIXBvbHlmaWxsLmVuZHNXaXRoKFwiLm1vZHVsZS5qc1wiKSkubWFwKChwb2x5ZmlsbCk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBrZXk6IHBvbHlmaWxsLFxuICAgICAgICAgICAgZGVmZXI6ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyxcbiAgICAgICAgICAgIG5vbmNlOiBwcm9wcy5ub25jZSxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpbixcbiAgICAgICAgICAgIG5vTW9kdWxlOiB0cnVlLFxuICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtwb2x5ZmlsbH0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWBcbiAgICAgICAgfSkpO1xufVxuZnVuY3Rpb24gaGFzQ29tcG9uZW50UHJvcHMoY2hpbGQpIHtcbiAgICByZXR1cm4gISFjaGlsZCAmJiAhIWNoaWxkLnByb3BzO1xufVxuZnVuY3Rpb24gaGFuZGxlRG9jdW1lbnRTY3JpcHRMb2FkZXJJdGVtcyhzY3JpcHRMb2FkZXIsIF9fTkVYVF9EQVRBX18sIHByb3BzKSB7XG4gICAgdmFyIHJlZiwgcmVmMSwgcmVmMiwgcmVmMztcbiAgICBpZiAoIXByb3BzLmNoaWxkcmVuKSByZXR1cm47XG4gICAgY29uc3Qgc2NyaXB0TG9hZGVySXRlbXMgPSBbXTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkocHJvcHMuY2hpbGRyZW4pID8gcHJvcHMuY2hpbGRyZW4gOiBbXG4gICAgICAgIHByb3BzLmNoaWxkcmVuXG4gICAgXTtcbiAgICBjb25zdCBoZWFkQ2hpbGRyZW4gPSAocmVmID0gY2hpbGRyZW4uZmluZCgoY2hpbGQpPT5jaGlsZC50eXBlID09PSBIZWFkKSkgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYxID0gcmVmLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmMS5jaGlsZHJlbjtcbiAgICBjb25zdCBib2R5Q2hpbGRyZW4gPSAocmVmMiA9IGNoaWxkcmVuLmZpbmQoKGNoaWxkKT0+Y2hpbGQudHlwZSA9PT0gXCJib2R5XCIpKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjMgPSByZWYyLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmMy5jaGlsZHJlbjtcbiAgICAvLyBTY3JpcHRzIHdpdGggYmVmb3JlSW50ZXJhY3RpdmUgY2FuIGJlIHBsYWNlZCBpbnNpZGUgSGVhZCBvciA8Ym9keT4gc28gY2hpbGRyZW4gb2YgYm90aCBuZWVkcyB0byBiZSB0cmF2ZXJzZWRcbiAgICBjb25zdCBjb21iaW5lZENoaWxkcmVuID0gW1xuICAgICAgICAuLi5BcnJheS5pc0FycmF5KGhlYWRDaGlsZHJlbikgPyBoZWFkQ2hpbGRyZW4gOiBbXG4gICAgICAgICAgICBoZWFkQ2hpbGRyZW5cbiAgICAgICAgXSxcbiAgICAgICAgLi4uQXJyYXkuaXNBcnJheShib2R5Q2hpbGRyZW4pID8gYm9keUNoaWxkcmVuIDogW1xuICAgICAgICAgICAgYm9keUNoaWxkcmVuXG4gICAgICAgIF0sIFxuICAgIF07XG4gICAgX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uZm9yRWFjaChjb21iaW5lZENoaWxkcmVuLCAoY2hpbGQpPT57XG4gICAgICAgIGlmICghY2hpbGQpIHJldHVybjtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IF9zY3JpcHQuZGVmYXVsdCkge1xuICAgICAgICAgICAgaWYgKGNoaWxkLnByb3BzLnN0cmF0ZWd5ID09PSBcImJlZm9yZUludGVyYWN0aXZlXCIpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHRMb2FkZXIuYmVmb3JlSW50ZXJhY3RpdmUgPSAoc2NyaXB0TG9hZGVyLmJlZm9yZUludGVyYWN0aXZlIHx8IFtdKS5jb25jYXQoW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICB9LCBcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFtcbiAgICAgICAgICAgICAgICBcImxhenlPbmxvYWRcIixcbiAgICAgICAgICAgICAgICBcImFmdGVySW50ZXJhY3RpdmVcIixcbiAgICAgICAgICAgICAgICBcIndvcmtlclwiXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGNoaWxkLnByb3BzLnN0cmF0ZWd5KSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlckl0ZW1zLnB1c2goY2hpbGQucHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIF9fTkVYVF9EQVRBX18uc2NyaXB0TG9hZGVyID0gc2NyaXB0TG9hZGVySXRlbXM7XG59XG5mdW5jdGlvbiBnZXRQcmVOZXh0V29ya2VyU2NyaXB0cyhjb250ZXh0LCBwcm9wcykge1xuICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBzY3JpcHRMb2FkZXIgLCBjcm9zc09yaWdpbiAsIG5leHRTY3JpcHRXb3JrZXJzICB9ID0gY29udGV4dDtcbiAgICAvLyBkaXNhYmxlIGBuZXh0U2NyaXB0V29ya2Vyc2AgaW4gZWRnZSBydW50aW1lXG4gICAgaWYgKCFuZXh0U2NyaXB0V29ya2VycyB8fCBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09IFwiZWRnZVwiKSByZXR1cm4gbnVsbDtcbiAgICB0cnkge1xuICAgICAgICBsZXQgeyBwYXJ0eXRvd25TbmlwcGV0ICB9ID0gX19ub25fd2VicGFja19yZXF1aXJlX18oXCJAYnVpbGRlci5pby9wYXJ0eXRvd24vaW50ZWdyYXRpb25cIik7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuaXNBcnJheShwcm9wcy5jaGlsZHJlbikgPyBwcm9wcy5jaGlsZHJlbiA6IFtcbiAgICAgICAgICAgIHByb3BzLmNoaWxkcmVuXG4gICAgICAgIF07XG4gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgdXNlciBoYXMgZGVmaW5lZCB0aGVpciBvd24gUGFydHl0b3duIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgY29uc3QgdXNlckRlZmluZWRDb25maWcgPSBjaGlsZHJlbi5maW5kKChjaGlsZCk9PntcbiAgICAgICAgICAgIHZhciByZWYsIHJlZjQ7XG4gICAgICAgICAgICByZXR1cm4gaGFzQ29tcG9uZW50UHJvcHMoY2hpbGQpICYmIChjaGlsZCA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGNoaWxkLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjQgPSByZWYuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID09IG51bGwgPyB2b2lkIDAgOiByZWY0Ll9faHRtbC5sZW5ndGgpICYmIFwiZGF0YS1wYXJ0eXRvd24tY29uZmlnXCIgaW4gY2hpbGQucHJvcHM7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAhdXNlckRlZmluZWRDb25maWcgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIHtcbiAgICAgICAgICAgIFwiZGF0YS1wYXJ0eXRvd24tY29uZmlnXCI6IFwiXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgcGFydHl0b3duID0ge1xuICAgICAgICAgICAgICBsaWI6IFwiJHthc3NldFByZWZpeH0vX25leHQvc3RhdGljL35wYXJ0eXRvd24vXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgYFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIHtcbiAgICAgICAgICAgIFwiZGF0YS1wYXJ0eXRvd25cIjogXCJcIixcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgX19odG1sOiBwYXJ0eXRvd25TbmlwcGV0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksIChzY3JpcHRMb2FkZXIud29ya2VyIHx8IFtdKS5tYXAoKGZpbGUsIGluZGV4KT0+e1xuICAgICAgICAgICAgY29uc3QgeyBzdHJhdGVneSAsIHNyYyAsIGNoaWxkcmVuOiBzY3JpcHRDaGlsZHJlbiAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICwgLi4uc2NyaXB0UHJvcHMgfSA9IGZpbGU7XG4gICAgICAgICAgICBsZXQgc3JjUHJvcHMgPSB7fTtcbiAgICAgICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgZXh0ZXJuYWwgc3JjIGlmIHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgc3JjUHJvcHMuc3JjID0gc3JjO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwpIHtcbiAgICAgICAgICAgICAgICAvLyBFbWJlZCBpbmxpbmUgc2NyaXB0IGlmIHByb3ZpZGVkIHdpdGggZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcbiAgICAgICAgICAgICAgICBzcmNQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgICAgICAgICAgICAgICAgX19odG1sOiBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzY3JpcHRDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIC8vIEVtYmVkIGlubGluZSBzY3JpcHQgaWYgcHJvdmlkZWQgd2l0aCBjaGlsZHJlblxuICAgICAgICAgICAgICAgIHNyY1Byb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IHR5cGVvZiBzY3JpcHRDaGlsZHJlbiA9PT0gXCJzdHJpbmdcIiA/IHNjcmlwdENoaWxkcmVuIDogQXJyYXkuaXNBcnJheShzY3JpcHRDaGlsZHJlbikgPyBzY3JpcHRDaGlsZHJlbi5qb2luKFwiXCIpIDogXCJcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdXNhZ2Ugb2YgbmV4dC9zY3JpcHQuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgYSBzcmMgYXR0cmlidXRlIG9yIGFuIGlubGluZSBzY3JpcHQ/IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtc2NyaXB0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCBPYmplY3QuYXNzaWduKHt9LCBzcmNQcm9wcywgc2NyaXB0UHJvcHMsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInRleHQvcGFydHl0b3duXCIsXG4gICAgICAgICAgICAgICAga2V5OiBzcmMgfHwgaW5kZXgsXG4gICAgICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1uc2NyaXB0XCI6IFwid29ya2VyXCIsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCgwLCBfaXNFcnJvcikuZGVmYXVsdChlcnIpICYmIGVyci5jb2RlICE9PSBcIk1PRFVMRV9OT1RfRk9VTkRcIikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFByZU5leHRTY3JpcHRzKGNvbnRleHQsIHByb3BzKSB7XG4gICAgY29uc3QgeyBzY3JpcHRMb2FkZXIgLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAsIGNyb3NzT3JpZ2luICB9ID0gY29udGV4dDtcbiAgICBjb25zdCB3ZWJXb3JrZXJTY3JpcHRzID0gZ2V0UHJlTmV4dFdvcmtlclNjcmlwdHMoY29udGV4dCwgcHJvcHMpO1xuICAgIGNvbnN0IGJlZm9yZUludGVyYWN0aXZlU2NyaXB0cyA9IChzY3JpcHRMb2FkZXIuYmVmb3JlSW50ZXJhY3RpdmUgfHwgW10pLmZpbHRlcigoc2NyaXB0KT0+c2NyaXB0LnNyYykubWFwKChmaWxlLCBpbmRleCk9PntcbiAgICAgICAgY29uc3QgeyBzdHJhdGVneSAsIC4uLnNjcmlwdFByb3BzIH0gPSBmaWxlO1xuICAgICAgICB2YXIgX2RlZmVyO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIE9iamVjdC5hc3NpZ24oe30sIHNjcmlwdFByb3BzLCB7XG4gICAgICAgICAgICBrZXk6IHNjcmlwdFByb3BzLnNyYyB8fCBpbmRleCxcbiAgICAgICAgICAgIGRlZmVyOiAoX2RlZmVyID0gc2NyaXB0UHJvcHMuZGVmZXIpICE9IG51bGwgPyBfZGVmZXIgOiAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAgICAgICBcImRhdGEtbnNjcmlwdFwiOiBcImJlZm9yZUludGVyYWN0aXZlXCIsXG4gICAgICAgICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW5cbiAgICAgICAgfSkpO1xuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIHdlYldvcmtlclNjcmlwdHMsIGJlZm9yZUludGVyYWN0aXZlU2NyaXB0cyk7XG59XG5mdW5jdGlvbiBnZXREeW5hbWljQ2h1bmtzKGNvbnRleHQsIHByb3BzLCBmaWxlcykge1xuICAgIGNvbnN0IHsgZHluYW1pY0ltcG9ydHMgLCBhc3NldFByZWZpeCAsIGlzRGV2ZWxvcG1lbnQgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgY3Jvc3NPcmlnaW4gLCAgfSA9IGNvbnRleHQ7XG4gICAgcmV0dXJuIGR5bmFtaWNJbXBvcnRzLm1hcCgoZmlsZSk9PntcbiAgICAgICAgaWYgKCFmaWxlLmVuZHNXaXRoKFwiLmpzXCIpIHx8IGZpbGVzLmFsbEZpbGVzLmluY2x1ZGVzKGZpbGUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBhc3luYzogIWlzRGV2ZWxvcG1lbnQgJiYgZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBkZWZlcjogIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0U2NyaXB0cyhjb250ZXh0LCBwcm9wcywgZmlsZXMpIHtcbiAgICB2YXIgcmVmO1xuICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBidWlsZE1hbmlmZXN0ICwgaXNEZXZlbG9wbWVudCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgLCBjcm9zc09yaWdpbiAsICB9ID0gY29udGV4dDtcbiAgICBjb25zdCBub3JtYWxTY3JpcHRzID0gZmlsZXMuYWxsRmlsZXMuZmlsdGVyKChmaWxlKT0+ZmlsZS5lbmRzV2l0aChcIi5qc1wiKSk7XG4gICAgY29uc3QgbG93UHJpb3JpdHlTY3JpcHRzID0gKHJlZiA9IGJ1aWxkTWFuaWZlc3QubG93UHJpb3JpdHlGaWxlcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5maWx0ZXIoKGZpbGUpPT5maWxlLmVuZHNXaXRoKFwiLmpzXCIpKTtcbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5ub3JtYWxTY3JpcHRzLFxuICAgICAgICAuLi5sb3dQcmlvcml0eVNjcmlwdHNcbiAgICBdLm1hcCgoZmlsZSk9PntcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICBzcmM6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAgICAgICBhc3luYzogIWlzRGV2ZWxvcG1lbnQgJiYgZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBkZWZlcjogIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLy8gQWRkIGEgc3BlY2lhbCBwcm9wZXJ0eSB0byB0aGUgYnVpbHQtaW4gYERvY3VtZW50YCBjb21wb25lbnQgc28gbGF0ZXIgd2UgY2FuXG4vLyBpZGVudGlmeSBpZiBhIHVzZXIgY3VzdG9taXplZCBgRG9jdW1lbnRgIGlzIHVzZWQgb3Igbm90LlxuY29uc3QgSW50ZXJuYWxGdW5jdGlvbkRvY3VtZW50ID0gZnVuY3Rpb24gSW50ZXJuYWxGdW5jdGlvbkRvY3VtZW50KCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSHRtbCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEhlYWQsIG51bGwpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChNYWluLCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KE5leHRTY3JpcHQsIG51bGwpKSk7XG59O1xuRG9jdW1lbnRbX2NvbnN0YW50cy5ORVhUX0JVSUxUSU5fRE9DVU1FTlRdID0gSW50ZXJuYWxGdW5jdGlvbkRvY3VtZW50O1xuZnVuY3Rpb24gSHRtbChwcm9wcykge1xuICAgIGNvbnN0IHsgaW5BbXBNb2RlICwgZG9jQ29tcG9uZW50c1JlbmRlcmVkICwgbG9jYWxlICwgc2NyaXB0TG9hZGVyICwgX19ORVhUX0RBVEFfXyAsICB9ID0gKDAsIF9yZWFjdCkudXNlQ29udGV4dChfaHRtbENvbnRleHQuSHRtbENvbnRleHQpO1xuICAgIGRvY0NvbXBvbmVudHNSZW5kZXJlZC5IdG1sID0gdHJ1ZTtcbiAgICBoYW5kbGVEb2N1bWVudFNjcmlwdExvYWRlckl0ZW1zKHNjcmlwdExvYWRlciwgX19ORVhUX0RBVEFfXywgcHJvcHMpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgIGxhbmc6IHByb3BzLmxhbmcgfHwgbG9jYWxlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgYW1wOiBpbkFtcE1vZGUgPyBcIlwiIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtYW1wZGV2bW9kZVwiOiBpbkFtcE1vZGUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IHVuZGVmaW5lZFxuICAgIH0pKTtcbn1cbmZ1bmN0aW9uIEFtcFN0eWxlcyh7IHN0eWxlcyAgfSkge1xuICAgIGlmICghc3R5bGVzKSByZXR1cm4gbnVsbDtcbiAgICAvLyB0cnkgdG8gcGFyc2Ugc3R5bGVzIGZyb20gZnJhZ21lbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiAgICBjb25zdCBjdXJTdHlsZXMgPSBBcnJheS5pc0FycmF5KHN0eWxlcykgPyBzdHlsZXMgOiBbXTtcbiAgICBpZiAoLy8gQHRzLWlnbm9yZSBQcm9wZXJ0eSAncHJvcHMnIGRvZXMgbm90IGV4aXN0IG9uIHR5cGUgUmVhY3RFbGVtZW50XG4gICAgc3R5bGVzLnByb3BzICYmIC8vIEB0cy1pZ25vcmUgUHJvcGVydHkgJ3Byb3BzJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlIFJlYWN0RWxlbWVudFxuICAgIEFycmF5LmlzQXJyYXkoc3R5bGVzLnByb3BzLmNoaWxkcmVuKSkge1xuICAgICAgICBjb25zdCBoYXNTdHlsZXMgPSAoZWwpPT57XG4gICAgICAgICAgICB2YXIgcmVmLCByZWY1O1xuICAgICAgICAgICAgcmV0dXJuIGVsID09IG51bGwgPyB2b2lkIDAgOiAocmVmID0gZWwucHJvcHMpID09IG51bGwgPyB2b2lkIDAgOiAocmVmNSA9IHJlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjUuX19odG1sO1xuICAgICAgICB9O1xuICAgICAgICAvLyBAdHMtaWdub3JlIFByb3BlcnR5ICdwcm9wcycgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSBSZWFjdEVsZW1lbnRcbiAgICAgICAgc3R5bGVzLnByb3BzLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKT0+e1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQuZm9yRWFjaCgoZWwpPT5oYXNTdHlsZXMoZWwpICYmIGN1clN0eWxlcy5wdXNoKGVsKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1N0eWxlcyhjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBjdXJTdHlsZXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiBBZGQgY3VzdG9tIHN0eWxlcyBiZWZvcmUgQU1QIHN0eWxlcyB0byBwcmV2ZW50IGFjY2lkZW50YWwgb3ZlcnJpZGVzICovIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgIFwiYW1wLWN1c3RvbVwiOiBcIlwiLFxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgX19odG1sOiBjdXJTdHlsZXMubWFwKChzdHlsZSk9PnN0eWxlLnByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCkuam9pbihcIlwiKS5yZXBsYWNlKC9cXC9cXCojIHNvdXJjZU1hcHBpbmdVUkw9LipcXCpcXC8vZywgXCJcIikucmVwbGFjZSgvXFwvXFwqQCBzb3VyY2VVUkw9Lio/XFwqXFwvL2csIFwiXCIpXG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmNsYXNzIEhlYWQgZXh0ZW5kcyBfcmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBfaHRtbENvbnRleHQuSHRtbENvbnRleHQ7XG4gICAgZ2V0Q3NzTGlua3MoZmlsZXMpIHtcbiAgICAgICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICwgZHluYW1pY0ltcG9ydHMgLCBjcm9zc09yaWdpbiAsIG9wdGltaXplQ3NzICwgb3B0aW1pemVGb250cyAsICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCBjc3NGaWxlcyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZik9PmYuZW5kc1dpdGgoXCIuY3NzXCIpKTtcbiAgICAgICAgY29uc3Qgc2hhcmVkRmlsZXMgPSBuZXcgU2V0KGZpbGVzLnNoYXJlZEZpbGVzKTtcbiAgICAgICAgLy8gVW5tYW5hZ2VkIGZpbGVzIGFyZSBDU1MgZmlsZXMgdGhhdCB3aWxsIGJlIGhhbmRsZWQgZGlyZWN0bHkgYnkgdGhlXG4gICAgICAgIC8vIHdlYnBhY2sgcnVudGltZSAoYG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luYCkuXG4gICAgICAgIGxldCB1bm1hbmdlZEZpbGVzID0gbmV3IFNldChbXSk7XG4gICAgICAgIGxldCBkeW5hbWljQ3NzRmlsZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoZHluYW1pY0ltcG9ydHMuZmlsdGVyKChmaWxlKT0+ZmlsZS5lbmRzV2l0aChcIi5jc3NcIikpKSk7XG4gICAgICAgIGlmIChkeW5hbWljQ3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IG5ldyBTZXQoY3NzRmlsZXMpO1xuICAgICAgICAgICAgZHluYW1pY0Nzc0ZpbGVzID0gZHluYW1pY0Nzc0ZpbGVzLmZpbHRlcigoZik9PiEoZXhpc3RpbmcuaGFzKGYpIHx8IHNoYXJlZEZpbGVzLmhhcyhmKSkpO1xuICAgICAgICAgICAgdW5tYW5nZWRGaWxlcyA9IG5ldyBTZXQoZHluYW1pY0Nzc0ZpbGVzKTtcbiAgICAgICAgICAgIGNzc0ZpbGVzLnB1c2goLi4uZHluYW1pY0Nzc0ZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzTGlua0VsZW1lbnRzID0gW107XG4gICAgICAgIGNzc0ZpbGVzLmZvckVhY2goKGZpbGUpPT57XG4gICAgICAgICAgICBjb25zdCBpc1NoYXJlZEZpbGUgPSBzaGFyZWRGaWxlcy5oYXMoZmlsZSk7XG4gICAgICAgICAgICBpZiAoIW9wdGltaXplQ3NzKSB7XG4gICAgICAgICAgICAgICAgY3NzTGlua0VsZW1lbnRzLnB1c2goLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogYCR7ZmlsZX0tcHJlbG9hZGAsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgICAgICBhczogXCJzdHlsZVwiLFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzVW5tYW5hZ2VkRmlsZSA9IHVubWFuZ2VkRmlsZXMuaGFzKGZpbGUpO1xuICAgICAgICAgICAgY3NzTGlua0VsZW1lbnRzLnB1c2goLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIHJlbDogXCJzdHlsZXNoZWV0XCIsXG4gICAgICAgICAgICAgICAgaHJlZjogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICBcImRhdGEtbi1nXCI6IGlzVW5tYW5hZ2VkRmlsZSA/IHVuZGVmaW5lZCA6IGlzU2hhcmVkRmlsZSA/IFwiXCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgXCJkYXRhLW4tcFwiOiBpc1VubWFuYWdlZEZpbGUgPyB1bmRlZmluZWQgOiBpc1NoYXJlZEZpbGUgPyB1bmRlZmluZWQgOiBcIlwiXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBvcHRpbWl6ZUZvbnRzKSB7XG4gICAgICAgICAgICBjc3NMaW5rRWxlbWVudHMgPSB0aGlzLm1ha2VTdHlsZXNoZWV0SW5lcnQoY3NzTGlua0VsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3NzTGlua0VsZW1lbnRzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiBjc3NMaW5rRWxlbWVudHM7XG4gICAgfVxuICAgIGdldFByZWxvYWREeW5hbWljQ2h1bmtzKCkge1xuICAgICAgICBjb25zdCB7IGR5bmFtaWNJbXBvcnRzICwgYXNzZXRQcmVmaXggLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGNyb3NzT3JpZ2luICwgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIHJldHVybiBkeW5hbWljSW1wb3J0cy5tYXAoKGZpbGUpPT57XG4gICAgICAgICAgICBpZiAoIWZpbGUuZW5kc1dpdGgoXCIuanNcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgICAgICBocmVmOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgIGFzOiBcInNjcmlwdFwiLFxuICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkvLyBGaWx0ZXIgb3V0IG51bGxlZCBzY3JpcHRzXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuICAgIGdldFByZWxvYWRNYWluTGlua3MoZmlsZXMpIHtcbiAgICAgICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICwgc2NyaXB0TG9hZGVyICwgY3Jvc3NPcmlnaW4gLCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgcHJlbG9hZEZpbGVzID0gZmlsZXMuYWxsRmlsZXMuZmlsdGVyKChmaWxlKT0+e1xuICAgICAgICAgICAgcmV0dXJuIGZpbGUuZW5kc1dpdGgoXCIuanNcIik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uKHNjcmlwdExvYWRlci5iZWZvcmVJbnRlcmFjdGl2ZSB8fCBbXSkubWFwKChmaWxlKT0+LyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZmlsZS5zcmMsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBmaWxlLnNyYyxcbiAgICAgICAgICAgICAgICAgICAgYXM6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgLi4ucHJlbG9hZEZpbGVzLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgICAgICBhczogXCJzY3JpcHRcIixcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW5cbiAgICAgICAgICAgICAgICB9KSksIFxuICAgICAgICBdO1xuICAgIH1cbiAgICBnZXRCZWZvcmVJbnRlcmFjdGl2ZUlubGluZVNjcmlwdHMoKSB7XG4gICAgICAgIGNvbnN0IHsgc2NyaXB0TG9hZGVyICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCB7IG5vbmNlICwgY3Jvc3NPcmlnaW4gIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKHNjcmlwdExvYWRlci5iZWZvcmVJbnRlcmFjdGl2ZSB8fCBbXSkuZmlsdGVyKChzY3JpcHQpPT4hc2NyaXB0LnNyYyAmJiAoc2NyaXB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHx8IHNjcmlwdC5jaGlsZHJlbikpLm1hcCgoZmlsZSwgaW5kZXgpPT57XG4gICAgICAgICAgICBjb25zdCB7IHN0cmF0ZWd5ICwgY2hpbGRyZW4gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAsIHNyYyAsIC4uLnNjcmlwdFByb3BzIH0gPSBmaWxlO1xuICAgICAgICAgICAgbGV0IGh0bWwgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCkge1xuICAgICAgICAgICAgICAgIGh0bWwgPSBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaHRtbCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJzdHJpbmdcIiA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKFwiXCIpIDogXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwgT2JqZWN0LmFzc2lnbih7fSwgc2NyaXB0UHJvcHMsIHtcbiAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IGh0bWxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGtleTogc2NyaXB0UHJvcHMuaWQgfHwgaW5kZXgsXG4gICAgICAgICAgICAgICAgbm9uY2U6IG5vbmNlLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1uc2NyaXB0XCI6IFwiYmVmb3JlSW50ZXJhY3RpdmVcIixcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTlxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RHluYW1pY0NodW5rcyhmaWxlcykge1xuICAgICAgICByZXR1cm4gZ2V0RHluYW1pY0NodW5rcyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMsIGZpbGVzKTtcbiAgICB9XG4gICAgZ2V0UHJlTmV4dFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVOZXh0U2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBnZXRTY3JpcHRzKGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBnZXRTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcywgZmlsZXMpO1xuICAgIH1cbiAgICBnZXRQb2x5ZmlsbFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQb2x5ZmlsbFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgbWFrZVN0eWxlc2hlZXRJbmVydChub2RlKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5tYXAobm9kZSwgKGMpPT57XG4gICAgICAgICAgICB2YXIgcmVmOCwgcmVmNjtcbiAgICAgICAgICAgIGlmICgoYyA9PSBudWxsID8gdm9pZCAwIDogYy50eXBlKSA9PT0gXCJsaW5rXCIgJiYgKGMgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY4ID0gYy5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjguaHJlZikgJiYgX2NvbnN0YW50cy5PUFRJTUlaRURfRk9OVF9QUk9WSURFUlMuc29tZSgoeyB1cmwgIH0pPT57XG4gICAgICAgICAgICAgICAgdmFyIHJlZiwgcmVmNztcbiAgICAgICAgICAgICAgICByZXR1cm4gYyA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGMucHJvcHMpID09IG51bGwgPyB2b2lkIDAgOiAocmVmNyA9IHJlZi5ocmVmKSA9PSBudWxsID8gdm9pZCAwIDogcmVmNy5zdGFydHNXaXRoKHVybCk7XG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb3BzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnByb3BzIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtaHJlZlwiOiBjLnByb3BzLmhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGMsIG5ld1Byb3BzKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSBudWxsID8gdm9pZCAwIDogKHJlZjYgPSBjLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmNi5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb3BzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnByb3BzIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5tYWtlU3R5bGVzaGVldEluZXJ0KGMucHJvcHMuY2hpbGRyZW4pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoYywgbmV3UHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHN0eWxlcyAsIGFtcFBhdGggLCBpbkFtcE1vZGUgLCBoeWJyaWRBbXAgLCBjYW5vbmljYWxCYXNlICwgX19ORVhUX0RBVEFfXyAsIGRhbmdlcm91c0FzUGF0aCAsIGhlYWRUYWdzICwgdW5zdGFibGVfcnVudGltZUpTICwgdW5zdGFibGVfSnNQcmVsb2FkICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgLCBvcHRpbWl6ZUNzcyAsIG9wdGltaXplRm9udHMgLCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgZGlzYWJsZVJ1bnRpbWVKUyA9IHVuc3RhYmxlX3J1bnRpbWVKUyA9PT0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRpc2FibGVKc1ByZWxvYWQgPSB1bnN0YWJsZV9Kc1ByZWxvYWQgPT09IGZhbHNlIHx8ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZztcbiAgICAgICAgdGhpcy5jb250ZXh0LmRvY0NvbXBvbmVudHNSZW5kZXJlZC5IZWFkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHsgaGVhZCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgbGV0IGNzc1ByZWxvYWRzID0gW107XG4gICAgICAgIGxldCBvdGhlckhlYWRFbGVtZW50cyA9IFtdO1xuICAgICAgICBpZiAoaGVhZCkge1xuICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChjKT0+e1xuICAgICAgICAgICAgICAgIGlmIChjICYmIGMudHlwZSA9PT0gXCJsaW5rXCIgJiYgYy5wcm9wc1tcInJlbFwiXSA9PT0gXCJwcmVsb2FkXCIgJiYgYy5wcm9wc1tcImFzXCJdID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzUHJlbG9hZHMucHVzaChjKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjICYmIG90aGVySGVhZEVsZW1lbnRzLnB1c2goYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBoZWFkID0gY3NzUHJlbG9hZHMuY29uY2F0KG90aGVySGVhZEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2hpbGRyZW4gPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgLy8gc2hvdyBhIHdhcm5pbmcgaWYgSGVhZCBjb250YWlucyA8dGl0bGU+IChvbmx5IGluIGRldmVsb3BtZW50KVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkKT0+e1xuICAgICAgICAgICAgICAgIHZhciByZWY7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNSZWFjdEhlbG1ldCA9IGNoaWxkID09IG51bGwgPyB2b2lkIDAgOiAocmVmID0gY2hpbGQucHJvcHMpID09IG51bGwgPyB2b2lkIDAgOiByZWZbXCJkYXRhLXJlYWN0LWhlbG1ldFwiXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUmVhY3RIZWxtZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZjk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoY2hpbGQgPT0gbnVsbCA/IHZvaWQgMCA6IGNoaWxkLnR5cGUpID09PSBcInRpdGxlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IDx0aXRsZT4gc2hvdWxkIG5vdCBiZSB1c2VkIGluIF9kb2N1bWVudC5qcydzIDxIZWFkPi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbm8tZG9jdW1lbnQtdGl0bGVcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNoaWxkID09IG51bGwgPyB2b2lkIDAgOiBjaGlsZC50eXBlKSA9PT0gXCJtZXRhXCIgJiYgKGNoaWxkID09IG51bGwgPyB2b2lkIDAgOiAocmVmOSA9IGNoaWxkLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmOS5uYW1lKSA9PT0gXCJ2aWV3cG9ydFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiB2aWV3cG9ydCBtZXRhIHRhZ3Mgc2hvdWxkIG5vdCBiZSB1c2VkIGluIF9kb2N1bWVudC5qcydzIDxIZWFkPi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbm8tZG9jdW1lbnQtdmlld3BvcnQtbWV0YVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmNyb3NzT3JpZ2luKSBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBgSGVhZGAgYXR0cmlidXRlIGBjcm9zc09yaWdpbmAgaXMgZGVwcmVjYXRlZC4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZG9jLWNyb3Nzb3JpZ2luLWRlcHJlY2F0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIgJiYgb3B0aW1pemVGb250cyAmJiAhaW5BbXBNb2RlKSB7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMubWFrZVN0eWxlc2hlZXRJbmVydChjaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGhhc0FtcGh0bWxSZWwgPSBmYWxzZTtcbiAgICAgICAgbGV0IGhhc0Nhbm9uaWNhbFJlbCA9IGZhbHNlO1xuICAgICAgICAvLyBzaG93IHdhcm5pbmcgYW5kIHJlbW92ZSBjb25mbGljdGluZyBhbXAgaGVhZCB0YWdzXG4gICAgICAgIGhlYWQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5tYXAoaGVhZCB8fCBbXSwgKGNoaWxkKT0+e1xuICAgICAgICAgICAgaWYgKCFjaGlsZCkgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlICwgcHJvcHMgIH0gPSBjaGlsZDtcbiAgICAgICAgICAgIGlmIChpbkFtcE1vZGUpIHtcbiAgICAgICAgICAgICAgICBsZXQgYmFkUHJvcCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibWV0YVwiICYmIHByb3BzLm5hbWUgPT09IFwidmlld3BvcnRcIikge1xuICAgICAgICAgICAgICAgICAgICBiYWRQcm9wID0gJ25hbWU9XCJ2aWV3cG9ydFwiJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwibGlua1wiICYmIHByb3BzLnJlbCA9PT0gXCJjYW5vbmljYWxcIikge1xuICAgICAgICAgICAgICAgICAgICBoYXNDYW5vbmljYWxSZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJzY3JpcHRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGJsb2NrIGlmXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIGl0IGhhcyBhIHNyYyBhbmQgaXNuJ3QgcG9pbnRpbmcgdG8gYW1wcHJvamVjdCdzIENETlxuICAgICAgICAgICAgICAgICAgICAvLyAyLiBpdCBpcyB1c2luZyBkYW5nZXJvdXNseVNldElubmVySFRNTCB3aXRob3V0IGEgdHlwZSBvclxuICAgICAgICAgICAgICAgICAgICAvLyBhIHR5cGUgb2YgdGV4dC9qYXZhc2NyaXB0XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5zcmMgJiYgcHJvcHMuc3JjLmluZGV4T2YoXCJhbXBwcm9qZWN0XCIpIDwgLTEgfHwgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgKCFwcm9wcy50eXBlIHx8IHByb3BzLnR5cGUgPT09IFwidGV4dC9qYXZhc2NyaXB0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWRQcm9wID0gXCI8c2NyaXB0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaCgocHJvcCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRQcm9wICs9IGAgJHtwcm9wfT1cIiR7cHJvcHNbcHJvcF19XCJgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWRQcm9wICs9IFwiLz5cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYmFkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEZvdW5kIGNvbmZsaWN0aW5nIGFtcCB0YWcgXCIke2NoaWxkLnR5cGV9XCIgd2l0aCBjb25mbGljdGluZyBwcm9wICR7YmFkUHJvcH0gaW4gJHtfX05FWFRfREFUQV9fLnBhZ2V9LiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jb25mbGljdGluZy1hbXAtdGFnYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbm9uLWFtcCBtb2RlXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibGlua1wiICYmIHByb3BzLnJlbCA9PT0gXCJhbXBodG1sXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzQW1waHRtbFJlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBnZXREb2N1bWVudEZpbGVzKHRoaXMuY29udGV4dC5idWlsZE1hbmlmZXN0LCB0aGlzLmNvbnRleHQuX19ORVhUX0RBVEFfXy5wYWdlLCBpbkFtcE1vZGUpO1xuICAgICAgICB2YXIgX25vbmNlLCBfbm9uY2UxO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaGVhZFwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRIZWFkSFRNTFByb3BzKHRoaXMucHJvcHMpKSwgdGhpcy5jb250ZXh0LmlzRGV2ZWxvcG1lbnQgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgICAgICBcImRhdGEtbmV4dC1oaWRlLWZvdWNcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZGF0YS1hbXBkZXZtb2RlXCI6IGluQW1wTW9kZSA/IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICBfX2h0bWw6IGBib2R5e2Rpc3BsYXk6bm9uZX1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCB7XG4gICAgICAgICAgICBcImRhdGEtbmV4dC1oaWRlLWZvdWNcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZGF0YS1hbXBkZXZtb2RlXCI6IGluQW1wTW9kZSA/IFwidHJ1ZVwiIDogdW5kZWZpbmVkXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgX19odG1sOiBgYm9keXtkaXNwbGF5OmJsb2NrfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpKSwgaGVhZCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcIm5leHQtaGVhZC1jb3VudFwiLFxuICAgICAgICAgICAgY29udGVudDogX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoaGVhZCB8fCBbXSkudG9TdHJpbmcoKVxuICAgICAgICB9KSwgY2hpbGRyZW4sIG9wdGltaXplRm9udHMgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcIm5leHQtZm9udC1wcmVjb25uZWN0XCJcbiAgICAgICAgfSksIGluQW1wTW9kZSAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJ2aWV3cG9ydFwiLFxuICAgICAgICAgICAgY29udGVudDogXCJ3aWR0aD1kZXZpY2Utd2lkdGgsbWluaW11bS1zY2FsZT0xLGluaXRpYWwtc2NhbGU9MVwiXG4gICAgICAgIH0pLCAhaGFzQ2Fub25pY2FsUmVsICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgcmVsOiBcImNhbm9uaWNhbFwiLFxuICAgICAgICAgICAgaHJlZjogY2Fub25pY2FsQmFzZSArICgwLCBfdXRpbHMpLmNsZWFuQW1wUGF0aChkYW5nZXJvdXNBc1BhdGgpXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICBhczogXCJzY3JpcHRcIixcbiAgICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvdjAuanNcIlxuICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFtcFN0eWxlcywge1xuICAgICAgICAgICAgc3R5bGVzOiBzdHlsZXNcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgICAgIFwiYW1wLWJvaWxlcnBsYXRlXCI6IFwiXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7LXdlYmtpdC1hbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aDstbW96LWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoOy1tcy1hbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aDthbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aH1ALXdlYmtpdC1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1tb3ota2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUAtbXMta2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUAtby1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QGtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgICAgICBcImFtcC1ib2lsZXJwbGF0ZVwiOiBcIlwiLFxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICBfX2h0bWw6IGBib2R5ey13ZWJraXQtYW5pbWF0aW9uOm5vbmU7LW1vei1hbmltYXRpb246bm9uZTstbXMtYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9YFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBhc3luYzogdHJ1ZSxcbiAgICAgICAgICAgIHNyYzogXCJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy92MC5qc1wiXG4gICAgICAgIH0pKSwgIWluQW1wTW9kZSAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsICFoYXNBbXBodG1sUmVsICYmIGh5YnJpZEFtcCAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgIHJlbDogXCJhbXBodG1sXCIsXG4gICAgICAgICAgICBocmVmOiBjYW5vbmljYWxCYXNlICsgZ2V0QW1wUGF0aChhbXBQYXRoLCBkYW5nZXJvdXNBc1BhdGgpXG4gICAgICAgIH0pLCB0aGlzLmdldEJlZm9yZUludGVyYWN0aXZlSW5saW5lU2NyaXB0cygpLCAhb3B0aW1pemVDc3MgJiYgdGhpcy5nZXRDc3NMaW5rcyhmaWxlcyksICFvcHRpbWl6ZUNzcyAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCB7XG4gICAgICAgICAgICBcImRhdGEtbi1jc3NcIjogKF9ub25jZSA9IHRoaXMucHJvcHMubm9uY2UpICE9IG51bGwgPyBfbm9uY2UgOiBcIlwiXG4gICAgICAgIH0pLCAhZGlzYWJsZVJ1bnRpbWVKUyAmJiAhZGlzYWJsZUpzUHJlbG9hZCAmJiB0aGlzLmdldFByZWxvYWREeW5hbWljQ2h1bmtzKCksICFkaXNhYmxlUnVudGltZUpTICYmICFkaXNhYmxlSnNQcmVsb2FkICYmIHRoaXMuZ2V0UHJlbG9hZE1haW5MaW5rcyhmaWxlcyksICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAmJiAhZGlzYWJsZVJ1bnRpbWVKUyAmJiB0aGlzLmdldFBvbHlmaWxsU2NyaXB0cygpLCAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRQcmVOZXh0U2NyaXB0cygpLCAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXREeW5hbWljQ2h1bmtzKGZpbGVzKSwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0U2NyaXB0cyhmaWxlcyksIG9wdGltaXplQ3NzICYmIHRoaXMuZ2V0Q3NzTGlua3MoZmlsZXMpLCBvcHRpbWl6ZUNzcyAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCB7XG4gICAgICAgICAgICBcImRhdGEtbi1jc3NcIjogKF9ub25jZTEgPSB0aGlzLnByb3BzLm5vbmNlKSAhPSBudWxsID8gX25vbmNlMSA6IFwiXCJcbiAgICAgICAgfSksIHRoaXMuY29udGV4dC5pc0RldmVsb3BtZW50ICYmIC8vIHRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIG1vdW50IGRldmVsb3BtZW50IHN0eWxlcyBzbyB0aGVcbiAgICAgICAgLy8gb3JkZXJpbmcgbWF0Y2hlcyBwcm9kdWN0aW9uXG4gICAgICAgIC8vIChieSBkZWZhdWx0LCBzdHlsZS1sb2FkZXIgaW5qZWN0cyBhdCB0aGUgYm90dG9tIG9mIDxoZWFkIC8+KVxuICAgICAgICAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCB7XG4gICAgICAgICAgICBpZDogXCJfX25leHRfY3NzX19ET19OT1RfVVNFX19cIlxuICAgICAgICB9KSwgc3R5bGVzIHx8IG51bGwpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIHt9LCAuLi5oZWFkVGFncyB8fCBbXSkpO1xuICAgIH1cbn1cbmV4cG9ydHMuSGVhZCA9IEhlYWQ7XG5mdW5jdGlvbiBNYWluKCkge1xuICAgIGNvbnN0IHsgZG9jQ29tcG9uZW50c1JlbmRlcmVkICB9ID0gKDAsIF9yZWFjdCkudXNlQ29udGV4dChfaHRtbENvbnRleHQuSHRtbENvbnRleHQpO1xuICAgIGRvY0NvbXBvbmVudHNSZW5kZXJlZC5NYWluID0gdHJ1ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm5leHQtanMtaW50ZXJuYWwtYm9keS1yZW5kZXItdGFyZ2V0XCIsIG51bGwpO1xufVxuY2xhc3MgTmV4dFNjcmlwdCBleHRlbmRzIF9yZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRpYyBjb250ZXh0VHlwZSA9IF9odG1sQ29udGV4dC5IdG1sQ29udGV4dDtcbiAgICBnZXREeW5hbWljQ2h1bmtzKGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBnZXREeW5hbWljQ2h1bmtzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcywgZmlsZXMpO1xuICAgIH1cbiAgICBnZXRQcmVOZXh0U2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIGdldFByZU5leHRTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcyk7XG4gICAgfVxuICAgIGdldFNjcmlwdHMoZmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzLCBmaWxlcyk7XG4gICAgfVxuICAgIGdldFBvbHlmaWxsU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlmaWxsU2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0SW5saW5lU2NyaXB0U291cmNlKGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBfX05FWFRfREFUQV9fICwgbGFyZ2VQYWdlRGF0YUJ5dGVzICB9ID0gY29udGV4dDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnN0cmluZ2lmeShfX05FWFRfREFUQV9fKTtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSBcImVkZ2VcIiA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShkYXRhKS5idWZmZXIuYnl0ZUxlbmd0aCA6IEJ1ZmZlci5mcm9tKGRhdGEpLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBwcmV0dHlCeXRlcyA9IHJlcXVpcmUoXCIuLi9saWIvcHJldHR5LWJ5dGVzXCIpLmRlZmF1bHQ7XG4gICAgICAgICAgICBpZiAobGFyZ2VQYWdlRGF0YUJ5dGVzICYmIGJ5dGVzID4gbGFyZ2VQYWdlRGF0YUJ5dGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBkYXRhIGZvciBwYWdlIFwiJHtfX05FWFRfREFUQV9fLnBhZ2V9XCIgaXMgJHtwcmV0dHlCeXRlcyhieXRlcyl9IHdoaWNoIGV4Y2VlZHMgdGhlIHRocmVzaG9sZCBvZiAke3ByZXR0eUJ5dGVzKGxhcmdlUGFnZURhdGFCeXRlcyl9LCB0aGlzIGFtb3VudCBvZiBkYXRhIGNhbiByZWR1Y2UgcGVyZm9ybWFuY2UuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9sYXJnZS1wYWdlLWRhdGFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoMCwgX2h0bWxlc2NhcGUpLmh0bWxFc2NhcGVKc29uU3RyaW5nKGRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICgoMCwgX2lzRXJyb3IpLmRlZmF1bHQoZXJyKSAmJiBlcnIubWVzc2FnZS5pbmRleE9mKFwiY2lyY3VsYXIgc3RydWN0dXJlXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgc3RydWN0dXJlIGluIFwiZ2V0SW5pdGlhbFByb3BzXCIgcmVzdWx0IG9mIHBhZ2UgXCIke19fTkVYVF9EQVRBX18ucGFnZX1cIi4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY2lyY3VsYXItc3RydWN0dXJlYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGFzc2V0UHJlZml4ICwgaW5BbXBNb2RlICwgYnVpbGRNYW5pZmVzdCAsIHVuc3RhYmxlX3J1bnRpbWVKUyAsIGRvY0NvbXBvbmVudHNSZW5kZXJlZCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgLCBjcm9zc09yaWdpbiAsICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCBkaXNhYmxlUnVudGltZUpTID0gdW5zdGFibGVfcnVudGltZUpTID09PSBmYWxzZTtcbiAgICAgICAgZG9jQ29tcG9uZW50c1JlbmRlcmVkLk5leHRTY3JpcHQgPSB0cnVlO1xuICAgICAgICBpZiAoaW5BbXBNb2RlKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbXBEZXZGaWxlcyA9IFtcbiAgICAgICAgICAgICAgICAuLi5idWlsZE1hbmlmZXN0LmRldkZpbGVzLFxuICAgICAgICAgICAgICAgIC4uLmJ1aWxkTWFuaWZlc3QucG9seWZpbGxGaWxlcyxcbiAgICAgICAgICAgICAgICAuLi5idWlsZE1hbmlmZXN0LmFtcERldkZpbGVzLCBcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCBkaXNhYmxlUnVudGltZUpTID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiX19ORVhUX0RBVEFfX1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogTmV4dFNjcmlwdC5nZXRJbmxpbmVTY3JpcHRTb3VyY2UodGhpcy5jb250ZXh0KVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJkYXRhLWFtcGRldm1vZGVcIjogdHJ1ZVxuICAgICAgICAgICAgfSksIGFtcERldkZpbGVzLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtmaWxlfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtYW1wZGV2bW9kZVwiOiB0cnVlXG4gICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5jcm9zc09yaWdpbikgY29uc29sZS53YXJuKFwiV2FybmluZzogYE5leHRTY3JpcHRgIGF0dHJpYnV0ZSBgY3Jvc3NPcmlnaW5gIGlzIGRlcHJlY2F0ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2RvYy1jcm9zc29yaWdpbi1kZXByZWNhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZ2V0RG9jdW1lbnRGaWxlcyh0aGlzLmNvbnRleHQuYnVpbGRNYW5pZmVzdCwgdGhpcy5jb250ZXh0Ll9fTkVYVF9EQVRBX18ucGFnZSwgaW5BbXBNb2RlKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgIWRpc2FibGVSdW50aW1lSlMgJiYgYnVpbGRNYW5pZmVzdC5kZXZGaWxlcyA/IGJ1aWxkTWFuaWZlc3QuZGV2RmlsZXMubWFwKChmaWxlKT0+LyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICB9KSkgOiBudWxsLCBkaXNhYmxlUnVudGltZUpTID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBpZDogXCJfX05FWFRfREFUQV9fXCIsXG4gICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgIF9faHRtbDogTmV4dFNjcmlwdC5nZXRJbmxpbmVTY3JpcHRTb3VyY2UodGhpcy5jb250ZXh0KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRQb2x5ZmlsbFNjcmlwdHMoKSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRQcmVOZXh0U2NyaXB0cygpLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAmJiAhZGlzYWJsZVJ1bnRpbWVKUyAmJiB0aGlzLmdldER5bmFtaWNDaHVua3MoZmlsZXMpLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAmJiAhZGlzYWJsZVJ1bnRpbWVKUyAmJiB0aGlzLmdldFNjcmlwdHMoZmlsZXMpKTtcbiAgICB9XG59XG5leHBvcnRzLk5leHRTY3JpcHQgPSBOZXh0U2NyaXB0O1xuZnVuY3Rpb24gZ2V0QW1wUGF0aChhbXBQYXRoLCBhc1BhdGgpIHtcbiAgICByZXR1cm4gYW1wUGF0aCB8fCBgJHthc1BhdGh9JHthc1BhdGguaW5jbHVkZXMoXCI/XCIpID8gXCImXCIgOiBcIj9cIn1hbXA9MWA7XG59XG5mdW5jdGlvbiBnZXRIZWFkSFRNTFByb3BzKHByb3BzKSB7XG4gICAgY29uc3QgeyBjcm9zc09yaWdpbiAsIG5vbmNlICwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcbiAgICAvLyBUaGlzIGFzc2lnbm1lbnQgaXMgbmVjZXNzYXJ5IGZvciBhZGRpdGlvbmFsIHR5cGUgY2hlY2tpbmcgdG8gYXZvaWQgdW5zdXBwb3J0ZWQgYXR0cmlidXRlcyBpbiA8aGVhZD5cbiAgICBjb25zdCBoZWFkUHJvcHMgPSByZXN0UHJvcHM7XG4gICAgcmV0dXJuIGhlYWRQcm9wcztcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9X2RvY3VtZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIkh0bWwiLCJNYWluIiwiZGVmYXVsdCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfZ2V0UGFnZUZpbGVzIiwiX3V0aWxzIiwiX2h0bWxlc2NhcGUiLCJfc2NyaXB0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9pc0Vycm9yIiwiX2h0bWxDb250ZXh0IiwiRG9jdW1lbnQiLCJDb21wb25lbnQiLCJnZXRJbml0aWFsUHJvcHMiLCJjdHgiLCJkZWZhdWx0R2V0SW5pdGlhbFByb3BzIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIkhlYWQiLCJOZXh0U2NyaXB0Iiwib2JqIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJnZXREb2N1bWVudEZpbGVzIiwiYnVpbGRNYW5pZmVzdCIsInBhdGhuYW1lIiwiaW5BbXBNb2RlIiwic2hhcmVkRmlsZXMiLCJnZXRQYWdlRmlsZXMiLCJwYWdlRmlsZXMiLCJhbGxGaWxlcyIsIlNldCIsImdldFBvbHlmaWxsU2NyaXB0cyIsImNvbnRleHQiLCJwcm9wcyIsImFzc2V0UHJlZml4IiwiZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmciLCJkaXNhYmxlT3B0aW1pemVkTG9hZGluZyIsImNyb3NzT3JpZ2luIiwicG9seWZpbGxGaWxlcyIsImZpbHRlciIsInBvbHlmaWxsIiwiZW5kc1dpdGgiLCJtYXAiLCJkZWZlciIsIm5vbmNlIiwibm9Nb2R1bGUiLCJzcmMiLCJoYXNDb21wb25lbnRQcm9wcyIsImNoaWxkIiwiaGFuZGxlRG9jdW1lbnRTY3JpcHRMb2FkZXJJdGVtcyIsInNjcmlwdExvYWRlciIsIl9fTkVYVF9EQVRBX18iLCJyZWYiLCJyZWYxIiwicmVmMiIsInJlZjMiLCJjaGlsZHJlbiIsInNjcmlwdExvYWRlckl0ZW1zIiwiQXJyYXkiLCJpc0FycmF5IiwiaGVhZENoaWxkcmVuIiwiZmluZCIsInR5cGUiLCJib2R5Q2hpbGRyZW4iLCJjb21iaW5lZENoaWxkcmVuIiwiQ2hpbGRyZW4iLCJmb3JFYWNoIiwic3RyYXRlZ3kiLCJiZWZvcmVJbnRlcmFjdGl2ZSIsImNvbmNhdCIsImluY2x1ZGVzIiwicHVzaCIsImdldFByZU5leHRXb3JrZXJTY3JpcHRzIiwibmV4dFNjcmlwdFdvcmtlcnMiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9SVU5USU1FIiwicGFydHl0b3duU25pcHBldCIsIl9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIiwidXNlckRlZmluZWRDb25maWciLCJyZWY0IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJsZW5ndGgiLCJGcmFnbWVudCIsIndvcmtlciIsImZpbGUiLCJpbmRleCIsInNjcmlwdENoaWxkcmVuIiwic2NyaXB0UHJvcHMiLCJzcmNQcm9wcyIsImpvaW4iLCJFcnJvciIsImFzc2lnbiIsImVyciIsImNvZGUiLCJjb25zb2xlIiwid2FybiIsIm1lc3NhZ2UiLCJnZXRQcmVOZXh0U2NyaXB0cyIsIndlYldvcmtlclNjcmlwdHMiLCJiZWZvcmVJbnRlcmFjdGl2ZVNjcmlwdHMiLCJzY3JpcHQiLCJfZGVmZXIiLCJnZXREeW5hbWljQ2h1bmtzIiwiZmlsZXMiLCJkeW5hbWljSW1wb3J0cyIsImlzRGV2ZWxvcG1lbnQiLCJhc3luYyIsImVuY29kZVVSSSIsImdldFNjcmlwdHMiLCJub3JtYWxTY3JpcHRzIiwibG93UHJpb3JpdHlTY3JpcHRzIiwibG93UHJpb3JpdHlGaWxlcyIsIkludGVybmFsRnVuY3Rpb25Eb2N1bWVudCIsIk5FWFRfQlVJTFRJTl9ET0NVTUVOVCIsImRvY0NvbXBvbmVudHNSZW5kZXJlZCIsImxvY2FsZSIsInVzZUNvbnRleHQiLCJIdG1sQ29udGV4dCIsImxhbmciLCJ1bmRlZmluZWQiLCJhbXAiLCJBbXBTdHlsZXMiLCJzdHlsZXMiLCJjdXJTdHlsZXMiLCJoYXNTdHlsZXMiLCJlbCIsInJlZjUiLCJzdHlsZSIsInJlcGxhY2UiLCJjb250ZXh0VHlwZSIsImdldENzc0xpbmtzIiwib3B0aW1pemVDc3MiLCJvcHRpbWl6ZUZvbnRzIiwiY3NzRmlsZXMiLCJmIiwidW5tYW5nZWRGaWxlcyIsImR5bmFtaWNDc3NGaWxlcyIsImZyb20iLCJleGlzdGluZyIsImNzc0xpbmtFbGVtZW50cyIsImlzU2hhcmVkRmlsZSIsInJlbCIsImhyZWYiLCJhcyIsImlzVW5tYW5hZ2VkRmlsZSIsIm1ha2VTdHlsZXNoZWV0SW5lcnQiLCJnZXRQcmVsb2FkRHluYW1pY0NodW5rcyIsIkJvb2xlYW4iLCJnZXRQcmVsb2FkTWFpbkxpbmtzIiwicHJlbG9hZEZpbGVzIiwiZ2V0QmVmb3JlSW50ZXJhY3RpdmVJbmxpbmVTY3JpcHRzIiwiaHRtbCIsImlkIiwiX19ORVhUX0NST1NTX09SSUdJTiIsIm5vZGUiLCJjIiwicmVmOCIsInJlZjYiLCJPUFRJTUlaRURfRk9OVF9QUk9WSURFUlMiLCJzb21lIiwidXJsIiwicmVmNyIsInN0YXJ0c1dpdGgiLCJuZXdQcm9wcyIsImNsb25lRWxlbWVudCIsImFtcFBhdGgiLCJoeWJyaWRBbXAiLCJjYW5vbmljYWxCYXNlIiwiZGFuZ2Vyb3VzQXNQYXRoIiwiaGVhZFRhZ3MiLCJ1bnN0YWJsZV9ydW50aW1lSlMiLCJ1bnN0YWJsZV9Kc1ByZWxvYWQiLCJkaXNhYmxlUnVudGltZUpTIiwiZGlzYWJsZUpzUHJlbG9hZCIsImhlYWQiLCJjc3NQcmVsb2FkcyIsIm90aGVySGVhZEVsZW1lbnRzIiwidG9BcnJheSIsImlzUmVhY3RIZWxtZXQiLCJyZWY5IiwibmFtZSIsImhhc0FtcGh0bWxSZWwiLCJoYXNDYW5vbmljYWxSZWwiLCJiYWRQcm9wIiwiaW5kZXhPZiIsImtleXMiLCJwcm9wIiwicGFnZSIsIl9ub25jZSIsIl9ub25jZTEiLCJnZXRIZWFkSFRNTFByb3BzIiwiY29udGVudCIsImNvdW50IiwidG9TdHJpbmciLCJjbGVhbkFtcFBhdGgiLCJnZXRBbXBQYXRoIiwiZ2V0SW5saW5lU2NyaXB0U291cmNlIiwibGFyZ2VQYWdlRGF0YUJ5dGVzIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJieXRlcyIsIlRleHRFbmNvZGVyIiwiZW5jb2RlIiwiYnVmZmVyIiwiYnl0ZUxlbmd0aCIsIkJ1ZmZlciIsInByZXR0eUJ5dGVzIiwiaHRtbEVzY2FwZUpzb25TdHJpbmciLCJhbXBEZXZGaWxlcyIsImRldkZpbGVzIiwiYXNQYXRoIiwicmVzdFByb3BzIiwiaGVhZFByb3BzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/pages/_document.js\n");
|
|
56
|
-
|
|
57
|
-
/***/ }),
|
|
58
|
-
|
|
59
|
-
/***/ "./src/pages/_document.tsx":
|
|
60
|
-
/*!*********************************!*\
|
|
61
|
-
!*** ./src/pages/_document.tsx ***!
|
|
62
|
-
\*********************************/
|
|
63
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
64
|
-
|
|
65
|
-
"use strict";
|
|
66
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/document */ \"../../../node_modules/next/document.js\");\n/* harmony import */ var next_document__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_document__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass MyDocument extends (next_document__WEBPACK_IMPORTED_MODULE_1___default()) {\n static async getInitialProps(ctx) {\n const initialProps = await next_document__WEBPACK_IMPORTED_MODULE_1___default().getInitialProps(ctx);\n return initialProps;\n }\n render() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Html, {\n className: \"bg-gray-1 text-gray-12 font-sans\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Head, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"icon\",\n type: \"image/x-icon\",\n href: \"/static/images/favicon.ico\"\n }, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Main, {}, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 29,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.NextScript, {}, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this);\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyDocument);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcGFnZXMvX2RvY3VtZW50LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBT3VCO0FBRXZCLE1BQU1LLFVBQVUsU0FBU0wsc0RBQVE7SUFDL0IsYUFBYU0sZUFBZSxDQUMxQkMsR0FBb0IsRUFDVztRQUMvQixNQUFNQyxZQUFZLEdBQUcsTUFBTVIsb0VBQXdCLENBQUNPLEdBQUcsQ0FBQztRQUN4RCxPQUFPQyxZQUFZLENBQUM7S0FDckI7SUFFREMsTUFBTSxHQUFHO1FBQ1AscUJBQ0UsOERBQUNQLCtDQUFJO1lBQUNRLFNBQVMsRUFBQyxrQ0FBa0M7OzhCQUNoRCw4REFBQ1QsK0NBQUk7OEJBQ0gsNEVBQUNVLE1BQUk7d0JBQ0hDLEdBQUcsRUFBQyxNQUFNO3dCQUNWQyxJQUFJLEVBQUMsY0FBYzt3QkFDbkJDLElBQUksRUFBQyw0QkFBNEI7Ozs7OzRCQUNqQzs7Ozs7d0JBQ0c7OEJBQ1AsOERBQUNDLE1BQUk7O3NDQUNILDhEQUFDWiwrQ0FBSTs7OztnQ0FBRztzQ0FDUiw4REFBQ0MscURBQVU7Ozs7Z0NBQUc7Ozs7Ozt3QkFDVDs7Ozs7O2dCQUNGLENBQ1A7S0FDSDtDQUNGO0FBRUQsaUVBQWVDLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9zcmMvcGFnZXMvX2RvY3VtZW50LnRzeD8xODhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEb2N1bWVudCwge1xuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBIZWFkLFxuICBIdG1sLFxuICBNYWluLFxuICBOZXh0U2NyaXB0LFxufSBmcm9tICduZXh0L2RvY3VtZW50JztcblxuY2xhc3MgTXlEb2N1bWVudCBleHRlbmRzIERvY3VtZW50IHtcbiAgc3RhdGljIGFzeW5jIGdldEluaXRpYWxQcm9wcyhcbiAgICBjdHg6IERvY3VtZW50Q29udGV4dCxcbiAgKTogUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz4ge1xuICAgIGNvbnN0IGluaXRpYWxQcm9wcyA9IGF3YWl0IERvY3VtZW50LmdldEluaXRpYWxQcm9wcyhjdHgpO1xuICAgIHJldHVybiBpbml0aWFsUHJvcHM7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxIdG1sIGNsYXNzTmFtZT1cImJnLWdyYXktMSB0ZXh0LWdyYXktMTIgZm9udC1zYW5zXCI+XG4gICAgICAgIDxIZWFkPlxuICAgICAgICAgIDxsaW5rXG4gICAgICAgICAgICByZWw9XCJpY29uXCJcbiAgICAgICAgICAgIHR5cGU9XCJpbWFnZS94LWljb25cIlxuICAgICAgICAgICAgaHJlZj1cIi9zdGF0aWMvaW1hZ2VzL2Zhdmljb24uaWNvXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L0hlYWQ+XG4gICAgICAgIDxib2R5PlxuICAgICAgICAgIDxNYWluIC8+XG4gICAgICAgICAgPE5leHRTY3JpcHQgLz5cbiAgICAgICAgPC9ib2R5PlxuICAgICAgPC9IdG1sPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlEb2N1bWVudDtcbiJdLCJuYW1lcyI6WyJEb2N1bWVudCIsIkhlYWQiLCJIdG1sIiwiTWFpbiIsIk5leHRTY3JpcHQiLCJNeURvY3VtZW50IiwiZ2V0SW5pdGlhbFByb3BzIiwiY3R4IiwiaW5pdGlhbFByb3BzIiwicmVuZGVyIiwiY2xhc3NOYW1lIiwibGluayIsInJlbCIsInR5cGUiLCJocmVmIiwiYm9keSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/pages/_document.tsx\n");
|
|
67
|
-
|
|
68
|
-
/***/ }),
|
|
69
|
-
|
|
70
|
-
/***/ "../../../node_modules/next/dist/lib/is-error.js":
|
|
71
|
-
/*!*******************************************************!*\
|
|
72
|
-
!*** ../../../node_modules/next/dist/lib/is-error.js ***!
|
|
73
|
-
\*******************************************************/
|
|
74
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
75
|
-
|
|
76
|
-
"use strict";
|
|
77
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = isError;\nexports.getProperError = getProperError;\nvar _isPlainObject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"../shared/lib/is-plain-object\");\nfunction isError(err) {\n return typeof err === \"object\" && err !== null && \"name\" in err && \"message\" in err;\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === \"undefined\") {\n return new Error(\"An undefined error was thrown, \" + \"see here for more info: https://nextjs.org/docs/messages/threw-undefined\");\n }\n if (err === null) {\n return new Error(\"A null error was thrown, \" + \"see here for more info: https://nextjs.org/docs/messages/threw-undefined\");\n }\n }\n return new Error((0, _isPlainObject).isPlainObject(err) ? JSON.stringify(err) : err + \"\");\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixrQkFBZTtBQUNmLHNCQUFzQjtBQUN0QixxQkFBcUIsbUJBQU8sQ0FBQyxvRUFBK0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXNDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2lzLWVycm9yLmpzPzM5YmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0Vycm9yO1xuZXhwb3J0cy5nZXRQcm9wZXJFcnJvciA9IGdldFByb3BlckVycm9yO1xudmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaXMtcGxhaW4tb2JqZWN0XCIpO1xuZnVuY3Rpb24gaXNFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGVyciA9PT0gXCJvYmplY3RcIiAmJiBlcnIgIT09IG51bGwgJiYgXCJuYW1lXCIgaW4gZXJyICYmIFwibWVzc2FnZVwiIGluIGVycjtcbn1cbmZ1bmN0aW9uIGdldFByb3BlckVycm9yKGVycikge1xuICAgIGlmIChpc0Vycm9yKGVycikpIHtcbiAgICAgICAgcmV0dXJuIGVycjtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgLy8gcHJvdmlkZSBiZXR0ZXIgZXJyb3IgZm9yIGNhc2Ugd2hlcmUgYHRocm93IHVuZGVmaW5lZGBcbiAgICAgICAgLy8gaXMgY2FsbGVkIGluIGRldmVsb3BtZW50XG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFwiQW4gdW5kZWZpbmVkIGVycm9yIHdhcyB0aHJvd24sIFwiICsgXCJzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy90aHJldy11bmRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIkEgbnVsbCBlcnJvciB3YXMgdGhyb3duLCBcIiArIFwic2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRXJyb3IoKDAsIF9pc1BsYWluT2JqZWN0KS5pc1BsYWluT2JqZWN0KGVycikgPyBKU09OLnN0cmluZ2lmeShlcnIpIDogZXJyICsgXCJcIik7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/lib/is-error.js\n");
|
|
78
|
-
|
|
79
|
-
/***/ }),
|
|
80
|
-
|
|
81
|
-
/***/ "../../../node_modules/next/dist/lib/pretty-bytes.js":
|
|
82
|
-
/*!***********************************************************!*\
|
|
83
|
-
!*** ../../../node_modules/next/dist/lib/pretty-bytes.js ***!
|
|
84
|
-
\***********************************************************/
|
|
85
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
86
|
-
|
|
87
|
-
"use strict";
|
|
88
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = prettyBytes;\nfunction prettyBytes(number, options) {\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n options = Object.assign({}, options);\n if (options.signed && number === 0) {\n return \" 0 B\";\n }\n const isNegative = number < 0;\n const prefix = isNegative ? \"-\" : options.signed ? \"+\" : \"\";\n if (isNegative) {\n number = -number;\n }\n if (number < 1) {\n const numberString = toLocaleString(number, options.locale);\n return prefix + numberString + \" B\";\n }\n const exponent = Math.min(Math.floor(Math.log10(number) / 3), UNITS.length - 1);\n number = Number((number / Math.pow(1000, exponent)).toPrecision(3));\n const numberString = toLocaleString(number, options.locale);\n const unit = UNITS[exponent];\n return prefix + numberString + \" \" + unit;\n}\n/*\nMIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/ const UNITS = [\n \"B\",\n \"kB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"PB\",\n \"EB\",\n \"ZB\",\n \"YB\"\n];\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/ const toLocaleString = (number, locale)=>{\n let result = number;\n if (typeof locale === \"string\") {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString();\n }\n return result;\n};\n\n//# sourceMappingURL=pretty-bytes.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvcHJldHR5LWJ5dGVzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0JBQWU7QUFDZjtBQUNBO0FBQ0EsNkRBQTZELGNBQWMsSUFBSSxPQUFPO0FBQ3RGO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJldmlldy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9wcmV0dHktYnl0ZXMuanM/MGNhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHByZXR0eUJ5dGVzO1xuZnVuY3Rpb24gcHJldHR5Qnl0ZXMobnVtYmVyLCBvcHRpb25zKSB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGZpbml0ZSBudW1iZXIsIGdvdCAke3R5cGVvZiBudW1iZXJ9OiAke251bWJlcn1gKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zLnNpZ25lZCAmJiBudW1iZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFwiIDAgQlwiO1xuICAgIH1cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gbnVtYmVyIDwgMDtcbiAgICBjb25zdCBwcmVmaXggPSBpc05lZ2F0aXZlID8gXCItXCIgOiBvcHRpb25zLnNpZ25lZCA/IFwiK1wiIDogXCJcIjtcbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMSkge1xuICAgICAgICBjb25zdCBudW1iZXJTdHJpbmcgPSB0b0xvY2FsZVN0cmluZyhudW1iZXIsIG9wdGlvbnMubG9jYWxlKTtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIG51bWJlclN0cmluZyArIFwiIEJcIjtcbiAgICB9XG4gICAgY29uc3QgZXhwb25lbnQgPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nMTAobnVtYmVyKSAvIDMpLCBVTklUUy5sZW5ndGggLSAxKTtcbiAgICBudW1iZXIgPSBOdW1iZXIoKG51bWJlciAvIE1hdGgucG93KDEwMDAsIGV4cG9uZW50KSkudG9QcmVjaXNpb24oMykpO1xuICAgIGNvbnN0IG51bWJlclN0cmluZyA9IHRvTG9jYWxlU3RyaW5nKG51bWJlciwgb3B0aW9ucy5sb2NhbGUpO1xuICAgIGNvbnN0IHVuaXQgPSBVTklUU1tleHBvbmVudF07XG4gICAgcmV0dXJuIHByZWZpeCArIG51bWJlclN0cmluZyArIFwiIFwiICsgdW5pdDtcbn1cbi8qXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIFNpbmRyZSBTb3JodXMgPHNpbmRyZXNvcmh1c0BnbWFpbC5jb20+IChzaW5kcmVzb3JodXMuY29tKVxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4qLyBjb25zdCBVTklUUyA9IFtcbiAgICBcIkJcIixcbiAgICBcImtCXCIsXG4gICAgXCJNQlwiLFxuICAgIFwiR0JcIixcbiAgICBcIlRCXCIsXG4gICAgXCJQQlwiLFxuICAgIFwiRUJcIixcbiAgICBcIlpCXCIsXG4gICAgXCJZQlwiXG5dO1xuLypcbkZvcm1hdHMgdGhlIGdpdmVuIG51bWJlciB1c2luZyBgTnVtYmVyI3RvTG9jYWxlU3RyaW5nYC5cbi0gSWYgbG9jYWxlIGlzIGEgc3RyaW5nLCB0aGUgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgYSBsb2NhbGUta2V5IChmb3IgZXhhbXBsZTogYGRlYCkuXG4tIElmIGxvY2FsZSBpcyB0cnVlLCB0aGUgc3lzdGVtIGRlZmF1bHQgbG9jYWxlIGlzIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuLSBJZiBubyB2YWx1ZSBmb3IgbG9jYWxlIGlzIHNwZWNpZmllZCwgdGhlIG51bWJlciBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLlxuKi8gY29uc3QgdG9Mb2NhbGVTdHJpbmcgPSAobnVtYmVyLCBsb2NhbGUpPT57XG4gICAgbGV0IHJlc3VsdCA9IG51bWJlcjtcbiAgICBpZiAodHlwZW9mIGxvY2FsZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXN1bHQgPSBudW1iZXIudG9Mb2NhbGVTdHJpbmcobG9jYWxlKTtcbiAgICB9IGVsc2UgaWYgKGxvY2FsZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXN1bHQgPSBudW1iZXIudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZXR0eS1ieXRlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/next/dist/lib/pretty-bytes.js\n");
|
|
89
|
-
|
|
90
|
-
/***/ }),
|
|
91
|
-
|
|
92
|
-
/***/ "../../../node_modules/next/document.js":
|
|
93
|
-
/*!**********************************************!*\
|
|
94
|
-
!*** ../../../node_modules/next/document.js ***!
|
|
95
|
-
\**********************************************/
|
|
96
|
-
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
97
|
-
|
|
98
|
-
eval("module.exports = __webpack_require__(/*! ./dist/pages/_document */ \"../../../node_modules/next/dist/pages/_document.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZG9jdW1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsd0hBQWtEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJldmlldy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kb2N1bWVudC5qcz81MzUwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L3BhZ2VzL19kb2N1bWVudCcpXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/next/document.js\n");
|
|
99
|
-
|
|
100
|
-
/***/ }),
|
|
101
|
-
|
|
102
|
-
/***/ "../server/get-page-files":
|
|
103
|
-
/*!*****************************************************!*\
|
|
104
|
-
!*** external "next/dist/server/get-page-files.js" ***!
|
|
105
|
-
\*****************************************************/
|
|
106
|
-
/***/ ((module) => {
|
|
107
|
-
|
|
108
|
-
"use strict";
|
|
109
|
-
module.exports = require("next/dist/server/get-page-files.js");
|
|
110
|
-
|
|
111
|
-
/***/ }),
|
|
112
|
-
|
|
113
|
-
/***/ "../server/htmlescape":
|
|
114
|
-
/*!*************************************************!*\
|
|
115
|
-
!*** external "next/dist/server/htmlescape.js" ***!
|
|
116
|
-
\*************************************************/
|
|
117
|
-
/***/ ((module) => {
|
|
118
|
-
|
|
119
|
-
"use strict";
|
|
120
|
-
module.exports = require("next/dist/server/htmlescape.js");
|
|
121
|
-
|
|
122
|
-
/***/ }),
|
|
123
|
-
|
|
124
|
-
/***/ "../server/utils":
|
|
125
|
-
/*!********************************************!*\
|
|
126
|
-
!*** external "next/dist/server/utils.js" ***!
|
|
127
|
-
\********************************************/
|
|
128
|
-
/***/ ((module) => {
|
|
129
|
-
|
|
130
|
-
"use strict";
|
|
131
|
-
module.exports = require("next/dist/server/utils.js");
|
|
132
|
-
|
|
133
|
-
/***/ }),
|
|
134
|
-
|
|
135
|
-
/***/ "../shared/lib/constants":
|
|
136
|
-
/*!****************************************************!*\
|
|
137
|
-
!*** external "next/dist/shared/lib/constants.js" ***!
|
|
138
|
-
\****************************************************/
|
|
139
|
-
/***/ ((module) => {
|
|
140
|
-
|
|
141
|
-
"use strict";
|
|
142
|
-
module.exports = require("next/dist/shared/lib/constants.js");
|
|
143
|
-
|
|
144
|
-
/***/ }),
|
|
145
|
-
|
|
146
|
-
/***/ "../shared/lib/head-manager-context":
|
|
147
|
-
/*!***************************************************************!*\
|
|
148
|
-
!*** external "next/dist/shared/lib/head-manager-context.js" ***!
|
|
149
|
-
\***************************************************************/
|
|
150
|
-
/***/ ((module) => {
|
|
151
|
-
|
|
152
|
-
"use strict";
|
|
153
|
-
module.exports = require("next/dist/shared/lib/head-manager-context.js");
|
|
154
|
-
|
|
155
|
-
/***/ }),
|
|
156
|
-
|
|
157
|
-
/***/ "../shared/lib/html-context":
|
|
158
|
-
/*!*******************************************************!*\
|
|
159
|
-
!*** external "next/dist/shared/lib/html-context.js" ***!
|
|
160
|
-
\*******************************************************/
|
|
161
|
-
/***/ ((module) => {
|
|
162
|
-
|
|
163
|
-
"use strict";
|
|
164
|
-
module.exports = require("next/dist/shared/lib/html-context.js");
|
|
165
|
-
|
|
166
|
-
/***/ }),
|
|
167
|
-
|
|
168
|
-
/***/ "../shared/lib/is-plain-object":
|
|
169
|
-
/*!**********************************************************!*\
|
|
170
|
-
!*** external "next/dist/shared/lib/is-plain-object.js" ***!
|
|
171
|
-
\**********************************************************/
|
|
172
|
-
/***/ ((module) => {
|
|
173
|
-
|
|
174
|
-
"use strict";
|
|
175
|
-
module.exports = require("next/dist/shared/lib/is-plain-object.js");
|
|
176
|
-
|
|
177
|
-
/***/ }),
|
|
178
|
-
|
|
179
|
-
/***/ "react":
|
|
180
|
-
/*!************************!*\
|
|
181
|
-
!*** external "react" ***!
|
|
182
|
-
\************************/
|
|
183
|
-
/***/ ((module) => {
|
|
184
|
-
|
|
185
|
-
"use strict";
|
|
186
|
-
module.exports = require("react");
|
|
187
|
-
|
|
188
|
-
/***/ }),
|
|
189
|
-
|
|
190
|
-
/***/ "react/jsx-dev-runtime":
|
|
191
|
-
/*!****************************************!*\
|
|
192
|
-
!*** external "react/jsx-dev-runtime" ***!
|
|
193
|
-
\****************************************/
|
|
194
|
-
/***/ ((module) => {
|
|
195
|
-
|
|
196
|
-
"use strict";
|
|
197
|
-
module.exports = require("react/jsx-dev-runtime");
|
|
198
|
-
|
|
199
|
-
/***/ })
|
|
200
|
-
|
|
201
|
-
};
|
|
202
|
-
;
|
|
203
|
-
|
|
204
|
-
// load runtime
|
|
205
|
-
var __webpack_require__ = require("../webpack-runtime.js");
|
|
206
|
-
__webpack_require__.C(exports);
|
|
207
|
-
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
|
208
|
-
var __webpack_exports__ = (__webpack_exec__("./src/pages/_document.tsx"));
|
|
209
|
-
module.exports = __webpack_exports__;
|
|
210
|
-
|
|
211
|
-
})();
|