create-keystone-app 5.0.0 → 6.0.0
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/create-keystone-app.cjs.dev.js +26 -32
- package/dist/create-keystone-app.cjs.prod.js +26 -32
- package/package.json +2 -2
- package/starter/.keystone/admin/.next/build-manifest.json +30 -0
- package/starter/.keystone/admin/.next/cache/webpack/client-development/0.pack +0 -0
- package/starter/.keystone/admin/.next/cache/webpack/client-development/index.pack +0 -0
- package/starter/.keystone/admin/.next/cache/webpack/server-development/0.pack +0 -0
- package/starter/.keystone/admin/.next/cache/webpack/server-development/index.pack +0 -0
- package/starter/.keystone/admin/.next/react-loadable-manifest.json +1 -0
- package/starter/.keystone/admin/.next/server/middleware-manifest.json +6 -0
- package/starter/.keystone/admin/.next/server/pages/_app.js +1534 -0
- package/starter/.keystone/admin/.next/server/pages/_document.js +156 -0
- package/starter/.keystone/admin/.next/server/pages/_error.js +56 -0
- package/starter/.keystone/admin/.next/server/pages/api/__keystone_api_build.js +123 -0
- package/starter/.keystone/admin/.next/server/pages-manifest.json +6 -0
- package/starter/.keystone/admin/.next/server/webpack-api-runtime.js +168 -0
- package/starter/.keystone/admin/.next/server/webpack-runtime.js +168 -0
- package/starter/.keystone/admin/.next/static/chunks/amp.js +366 -0
- package/starter/.keystone/admin/.next/static/chunks/main.js +1251 -0
- package/starter/.keystone/admin/.next/static/chunks/pages/_app.js +10481 -0
- package/starter/.keystone/admin/.next/static/chunks/pages/_error.js +28 -0
- package/starter/.keystone/admin/.next/static/chunks/polyfills.js +1 -0
- package/starter/.keystone/admin/.next/static/chunks/react-refresh.js +62 -0
- package/starter/.keystone/admin/.next/static/chunks/webpack.js +1202 -0
- package/starter/.keystone/admin/.next/static/development/_buildManifest.js +1 -0
- package/starter/.keystone/admin/.next/static/development/_middlewareManifest.js +1 -0
- package/starter/.keystone/admin/.next/static/development/_ssgManifest.js +1 -0
- package/starter/.keystone/admin/.next/trace +26 -0
- package/starter/.keystone/admin/next-env.d.ts +6 -0
- package/starter/.keystone/admin/next.config.js +4 -0
- package/starter/.keystone/admin/pages/_app.js +19 -0
- package/starter/.keystone/admin/pages/api/__keystone_api_build.js +3 -0
- package/starter/.keystone/admin/pages/index.js +1 -0
- package/starter/.keystone/admin/pages/init.js +5 -0
- package/starter/.keystone/admin/pages/no-access.js +3 -0
- package/starter/.keystone/admin/pages/posts/[id].js +3 -0
- package/starter/.keystone/admin/pages/posts/index.js +3 -0
- package/starter/.keystone/admin/pages/signin.js +3 -0
- package/starter/.keystone/admin/pages/tags/[id].js +3 -0
- package/starter/.keystone/admin/pages/tags/index.js +3 -0
- package/starter/.keystone/admin/pages/users/[id].js +3 -0
- package/starter/.keystone/admin/pages/users/index.js +3 -0
- package/starter/.keystone/admin/tsconfig.json +22 -0
- package/starter/CHANGELOG.md +32 -0
- package/starter/README.md +7 -7
- package/starter/auth.ts +32 -3
- package/starter/keystone.db +0 -0
- package/starter/keystone.ts +16 -9
- package/starter/package.json +12 -9
- package/starter/schema.graphql +132 -72
- package/starter/schema.prisma +12 -12
- package/starter/schema.ts +63 -17
- package/CHANGELOG.md +0 -151
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
4
|
+
* This devtool is neither made for production nor for readable output files.
|
|
5
|
+
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
6
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
7
|
+
* or disable the default devtool with "devtool: false".
|
|
8
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
9
|
+
*/
|
|
10
|
+
(() => {
|
|
11
|
+
var exports = {};
|
|
12
|
+
exports.id = "pages/_document";
|
|
13
|
+
exports.ids = ["pages/_document"];
|
|
14
|
+
exports.modules = {
|
|
15
|
+
|
|
16
|
+
/***/ "../../../../node_modules/next/dist/client/head-manager.js":
|
|
17
|
+
/*!*****************************************************************!*\
|
|
18
|
+
!*** ../../../../node_modules/next/dist/client/head-manager.js ***!
|
|
19
|
+
\*****************************************************************/
|
|
20
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
21
|
+
|
|
22
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.DOMAttributeNames = void 0;\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 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.previousElementSibling){\n if (j.tagName.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 (oldTag.isEqualNode(newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>t.parentNode.removeChild(t)\n );\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl)\n );\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nfunction initHeadManager() {\n let updatePromise = null;\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const promise = updatePromise = Promise.resolve().then(()=>{\n if (promise !== updatePromise) return;\n updatePromise = null;\n const tags = {\n };\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 };\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFZO0FBQ1pBLDhDQUE2QyxDQUFDO0lBQzFDRyxLQUFLLEVBQUUsSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCxrQkFBZSxHQUFHRyxlQUFlO0FBQ2pDSCx5QkFBeUIsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNsQyxLQUFLLENBQUNJLGlCQUFpQixHQUFHLENBQUM7SUFDdkJDLGFBQWEsRUFBRSxDQUFnQjtJQUMvQkMsU0FBUyxFQUFFLENBQU87SUFDbEJDLE9BQU8sRUFBRSxDQUFLO0lBQ2RDLFNBQVMsRUFBRSxDQUFZO0lBQ3ZCQyxRQUFRLEVBQUUsQ0FBVTtBQUN4QixDQUFDO0FBQ0RULHlCQUF5QixHQUFHSSxpQkFBaUI7U0FDcENNLGlCQUFpQixDQUFDLENBQUMsQ0FBQ0MsSUFBSSxHQUFHQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsS0FBSyxDQUFDQyxFQUFFLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixJQUFJO0lBQ3RDLEdBQUcsQ0FBQyxLQUFLLENBQUNLLENBQUMsSUFBSUosS0FBSyxDQUFDLENBQUM7UUFDbEIsRUFBRSxHQUFHQSxLQUFLLENBQUNLLGNBQWMsQ0FBQ0QsQ0FBQyxHQUFHLFFBQVE7UUFDdEMsRUFBRSxFQUFFQSxDQUFDLEtBQUssQ0FBVSxhQUFJQSxDQUFDLEtBQUssQ0FBeUIsMEJBQUUsUUFBUTtRQUNqRSxFQUE2QztRQUM3QyxFQUFFLEVBQUVKLEtBQUssQ0FBQ0ksQ0FBQyxNQUFNRSxTQUFTLEVBQUUsUUFBUTtRQUNwQyxLQUFLLENBQUNDLElBQUksR0FBR2YsaUJBQWlCLENBQUNZLENBQUMsS0FBS0EsQ0FBQyxDQUFDSSxXQUFXO1FBQ2xELEVBQUUsRUFBRVQsSUFBSSxLQUFLLENBQVEsWUFBS1EsSUFBSSxLQUFLLENBQU8sVUFBSUEsSUFBSSxLQUFLLENBQU8sVUFBSUEs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QUNqRSxJQUFJLEtBQUssQ0FBQyxDQUFDO29CQUNyQ29CLFVBQVUsQ0FBQ2tCLElBQUksQ0FBQzJCLENBQUM7b0JBQ2pCRCxJQUFJLENBQUNDLENBQUMsQ0FBQ2pFLElBQUksSUFBSW9CLFVBQVU7Z0JBQzdCLENBQUM7Z0JBQ0QsS0FBSyxDQUFDK0MsY0FBYyxHQUFHSCxJQUFJLENBQUNJLEtBQUssR0FBR0osSUFBSSxDQUFDSSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUk7Z0JBQ3hELEdBQUcsQ0FBQ0EsS0FBSyxHQUFHLENBQUU7Z0JBQ2QsRUFBRSxFQUFFRCxjQUFjLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQ3hELFFBQVEsRUFBRSxDQUFDLEdBQUd3RCxjQUFjLENBQUNsRSxLQUFLO29CQUMxQ21FLEtBQUssR0FBRyxNQUFNLENBQUN6RCxRQUFRLEtBQUssQ0FBUSxVQUFHQSxRQUFRLEdBQUdLLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixRQUFRLElBQUlBLFFBQVEsQ0FBQ08sSUFBSSxDQUFDLENBQUUsS0FBSSxDQUFFO2dCQUN0RyxDQUFDO2dCQUNELEVBQUUsRUFBRWtELEtBQUssS0FBS2pFLFFBQVEsQ0FBQ2lFLEtBQUssRUFBRWpFLFFBQVEsQ0FBQ2lFLEtBQUssR0FBR0EsS0FBSztnQkFDcEQsQ0FBQztvQkFDRyxDQUFNO29CQUNOLENBQU07b0JBQ04sQ0FBTTtvQkFDTixDQUFPO29CQUNQLENBQVE7Z0JBQ1osQ0FBQyxDQUFDbkIsT0FBTyxFQUFFakQsSUFBSSxHQUFHLENBQUM7b0JBQ2ZtQixjQUFjLENBQUNuQixJQUFJLEVBQUVnRSxJQUFJLENBQUNoRSxJQUFJLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyxDQUV1QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanM/OTNiNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGluaXRIZWFkTWFuYWdlcjtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSB2b2lkIDA7XG5jb25zdCBET01BdHRyaWJ1dGVOYW1lcyA9IHtcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0LWNoYXJzZXQnLFxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBodG1sRm9yOiAnZm9yJyxcbiAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2JyxcbiAgICBub01vZHVsZTogJ25vTW9kdWxlJ1xufTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSBET01BdHRyaWJ1dGVOYW1lcztcbmZ1bmN0aW9uIHJlYWN0RWxlbWVudFRvRE9NKHsgdHlwZSAsIHByb3BzICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSAnY2hpbGRyZW4nIHx8IHAgPT09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIGNvbnRpbnVlO1xuICAgICAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICAgICAgaWYgKHByb3BzW3BdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcgJiYgKGF0dHIgPT09ICdhc3luYycgfHwgYXR0ciA9PT0gJ2RlZmVyJyB8fCBhdHRyID09PSAnbm9Nb2R1bGUnKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIH0gPSBwcm9wcztcbiAgICBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpIHtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIGNvbXBvbmVudHMpIHtcbiAgICBjb25zdCBoZWFkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIGNvbnN0IGhlYWRDb3VudEVsID0gaGVhZEVsLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFoZWFkQ291bnRFbCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2FybmluZzogbmV4dC1oZWFkLWNvdW50IGlzIG1pc3NpbmcuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtaGVhZC1jb3VudC1taXNzaW5nJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gaGVhZENvdW50RWwucHJldmlvdXNFbGVtZW50U2libGluZzsgaSA8IGhlYWRDb3VudDsgaSsrLCBqID0gai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKXtcbiAgICAgICAgaWYgKGoudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0eXBlKSB7XG4gICAgICAgICAgICBvbGRUYWdzLnB1c2goaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV3VGFncyA9IGNvbXBvbmVudHMubWFwKHJlYWN0RWxlbWVudFRvRE9NKS5maWx0ZXIoKG5ld1RhZyk9PntcbiAgICAgICAgZm9yKGxldCBrID0gMCwgbGVuID0gb2xkVGFncy5sZW5ndGg7IGsgPCBsZW47IGsrKyl7XG4gICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgaWYgKG9sZFRhZy5pc0VxdWFsTm9kZShuZXdUYWcpKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KVxuICAgICk7XG4gICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbClcbiAgICApO1xuICAgIGhlYWRDb3VudEVsLmNvbnRlbnQgPSAoaGVhZENvdW50IC0gb2xkVGFncy5sZW5ndGggKyBuZXdUYWdzLmxlbmd0aCkudG9TdHJpbmcoKTtcbn1cbmZ1bmN0aW9uIGluaXRIZWFkTWFuYWdlcigpIHtcbiAgICBsZXQgdXBkYXRlUHJvbWlzZSA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW91bnRlZEluc3RhbmNlczogbmV3IFNldCgpLFxuICAgICAgICB1cGRhdGVIZWFkOiAoaGVhZCk9PntcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB1cGRhdGVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIGlmIChwcm9taXNlICE9PSB1cGRhdGVQcm9taXNlKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdXBkYXRlUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFncyA9IHtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoaCk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKC8vIElmIHRoZSBmb250IHRhZyBpcyBsb2FkZWQgb25seSBvbiBjbGllbnQgbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAvLyBpdCB3b24ndCBiZSBpbmxpbmVkLiBJbiB0aGlzIGNhc2UgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgICAgICAgICAgICAgICBoLnR5cGUgPT09ICdsaW5rJyAmJiBoLnByb3BzWydkYXRhLW9wdGltaXplZC1mb250cyddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbZGF0YS1ocmVmPVwiJHtoLnByb3BzWydkYXRhLWhyZWYnXX1cIl1gKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wcy5ocmVmID0gaC5wcm9wc1snZGF0YS1ocmVmJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wc1snZGF0YS1ocmVmJ10gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRhZ3NbaC50eXBlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGgpO1xuICAgICAgICAgICAgICAgICAgICB0YWdzW2gudHlwZV0gPSBjb21wb25lbnRzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlQ29tcG9uZW50ID0gdGFncy50aXRsZSA/IHRhZ3MudGl0bGVbMF0gOiBudWxsO1xuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9ICcnO1xuICAgICAgICAgICAgICAgIGlmICh0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuICB9ID0gdGl0bGVDb21wb25lbnQucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGl0bGUgIT09IGRvY3VtZW50LnRpdGxlKSBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgJ21ldGEnLFxuICAgICAgICAgICAgICAgICAgICAnYmFzZScsXG4gICAgICAgICAgICAgICAgICAgICdsaW5rJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdCdcbiAgICAgICAgICAgICAgICBdLmZvckVhY2goKHR5cGUpPT57XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIHRhZ3NbdHlwZV0gfHwgW10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLW1hbmFnZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsImluaXRIZWFkTWFuYWdlciIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwiYWNjZXB0Q2hhcnNldCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJodHRwRXF1aXYiLCJub01vZHVsZSIsInJlYWN0RWxlbWVudFRvRE9NIiwidHlwZSIsInByb3BzIiwiZWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwidXBkYXRlRWxlbWVudHMiLCJjb21wb25lbnRzIiwiaGVhZEVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJoZWFkQ291bnRFbCIsInF1ZXJ5U2VsZWN0b3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJjb250ZW50Iiwib2xkVGFncyIsImkiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInRhZ05hbWUiLCJwdXNoIiwibmV3VGFncyIsIm1hcCIsImZpbHRlciIsIm5ld1RhZyIsImsiLCJsZW4iLCJsZW5ndGgiLCJvbGRUYWciLCJpc0VxdWFsTm9kZSIsInNwbGljZSIsImZvckVhY2giLCJ0IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwidG9TdHJpbmciLCJ1cGRhdGVQcm9taXNlIiwibW91bnRlZEluc3RhbmNlcyIsIlNldCIsInVwZGF0ZUhlYWQiLCJoZWFkIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInRhZ3MiLCJoIiwiaHJlZiIsInRpdGxlQ29tcG9uZW50IiwidGl0bGUiXSwic291cmNlUm9vdCI6IiJ9\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
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
31
|
+
|
|
32
|
+
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; //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFZO0FBQ1pBLDhDQUE2QyxDQUFDO0lBQzFDRyxLQUFLLEVBQUUsSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCwwQkFBMEIsR0FBR0EsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDRyxtQkFBbUIsR0FBRyxNQUFNLENBQUNDLElBQUksS0FBSyxDQUFXLGNBQUlBLElBQUksQ0FBQ0QsbUJBQW1CLElBQUlDLElBQUksQ0FBQ0QsbUJBQW1CLENBQUNFLElBQUksQ0FBQ0MsTUFBTSxLQUFLLFFBQVEsQ0FBQ0MsRUFBRSxFQUFFLENBQUM7SUFDMUksR0FBRyxDQUFDQyxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsR0FBRztJQUNwQixNQUFNLENBQUNDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQztRQUMxQkosRUFBRSxDQUFDLENBQUM7WUFDQUssVUFBVSxFQUFFLEtBQUs7WUFDakJDLGFBQWEsRUFBRSxRQUFRLEdBQUcsQ0FBQztnQkFDdkIsTUFBTSxDQUFDQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJTixJQUFJLENBQUNDLEdBQUcsS0FBS0YsS0FBSztZQUMvQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsRUFBRSxDQUFDO0FBQ1IsQ0FBQztBQUNEUiwyQkFBMkIsR0FBR0csbUJBQW1CO0FBQ2pELEtBQUssQ0FBQ0Qsa0JBQWtCLEdBQUcsTUFBTSxDQUFDRSxJQUFJLEtBQUssQ0FBVyxjQUFJQSxJQUFJLENBQUNGLGtCQUFrQixJQUFJRSxJQUFJLENBQUNGLGtCQUFrQixDQUFDRyxJQUFJLENBQUNDLE1BQU0sS0FBSyxRQUFRLENBQUNVLEVBQUUsRUFBRSxDQUFDO0lBQ3ZJLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDRCxFQUFFO0FBQzFCLENBQUM7QUFDRGhCLDBCQUEwQixHQUFHRSxrQkFBa0IsQ0FFL0MsQ0FBaUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzPzdlZTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNhbmNlbElkbGVDYWxsYmFjayA9IGV4cG9ydHMucmVxdWVzdElkbGVDYWxsYmFjayA9IHZvaWQgMDtcbmNvbnN0IHJlcXVlc3RJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBjYih7XG4gICAgICAgICAgICBkaWRUaW1lb3V0OiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVSZW1haW5pbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgwLCA1MCAtIChEYXRlLm5vdygpIC0gc3RhcnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgMSk7XG59O1xuZXhwb3J0cy5yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWVzdElkbGVDYWxsYmFjaztcbmNvbnN0IGNhbmNlbElkbGVDYWxsYmFjayA9IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5leHBvcnRzLmNhbmNlbElkbGVDYWxsYmFjayA9IGNhbmNlbElkbGVDYWxsYmFjaztcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC1pZGxlLWNhbGxiYWNrLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNhbmNlbElkbGVDYWxsYmFjayIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJzZWxmIiwiYmluZCIsIndpbmRvdyIsImNiIiwic3RhcnQiLCJEYXRlIiwibm93Iiwic2V0VGltZW91dCIsImRpZFRpbWVvdXQiLCJ0aW1lUmVtYWluaW5nIiwiTWF0aCIsIm1heCIsImlkIiwiY2xlYXJUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../../node_modules/next/dist/client/request-idle-callback.js\n");
|
|
33
|
+
|
|
34
|
+
/***/ }),
|
|
35
|
+
|
|
36
|
+
/***/ "../../../../node_modules/next/dist/client/script.js":
|
|
37
|
+
/*!***********************************************************!*\
|
|
38
|
+
!*** ../../../../node_modules/next/dist/client/script.js ***!
|
|
39
|
+
\***********************************************************/
|
|
40
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
41
|
+
|
|
42
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\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 _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {\n };\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {\n };\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {\n };\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {\n };\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {\n };\n var target = {\n };\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 =()=>{\n } , 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 el.setAttribute('data-nscript', strategy);\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy ='afterInteractive' } = props;\n if (strategy === 'afterInteractive') {\n loadScript(props);\n } else if (strategy === 'lazyOnload') {\n window.addEventListener('load', ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\n });\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === 'complete') {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\n } else {\n window.addEventListener('load', ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props)\n );\n });\n }\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n}\nfunction Script(props) {\n const { src ='' , onLoad =()=>{\n } , dangerouslySetInnerHTML , strategy ='afterInteractive' , onError } = props, restProps = _objectWithoutProperties(props, [\n \"src\",\n \"onLoad\",\n \"dangerouslySetInnerHTML\",\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') {\n if (updateScripts) {\n scripts.beforeInteractive = (scripts.beforeInteractive || []).concat([\n _objectSpread({\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; //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvc2NyaXB0LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFZO0FBQ1pBLDhDQUE2QyxDQUFDO0lBQzFDRyxLQUFLLEVBQUUsSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGRCx3QkFBd0IsR0FBR0UsZ0JBQWdCO0FBQzNDRixrQkFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsQ0FBQ0ksTUFBTSxHQUFHQyx1QkFBdUIsQ0FBQ0MsbUJBQU8sQ0FBQyxvQkFBTztBQUNwRCxHQUFHLENBQUNDLG1CQUFtQixHQUFHRCxtQkFBTyxDQUFDLDhFQUFvQztBQUN0RSxHQUFHLENBQUNFLFlBQVksR0FBR0YsbUJBQU8sQ0FBQyxpRkFBZ0I7QUFDM0MsR0FBRyxDQUFDRyxvQkFBb0IsR0FBR0gsbUJBQU8sQ0FBQyxtR0FBeUI7U0FDbkRJLGVBQWUsQ0FBQ0MsR0FBRyxFQUFFQyxHQUFHLEVBQUVYLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLEVBQUUsRUFBRVcsR0FBRyxJQUFJRCxHQUFHLEVBQUUsQ0FBQztRQUNiYixNQUFNLENBQUNDLGNBQWMsQ0FBQ1ksR0FBRyxFQUFFQyxHQUFHLEVBQUUsQ0FBQztZQUM3QlgsS0FBSyxFQUFFQSxLQUFLO1lBQ1pZLFVBQVUsRUFBRSxJQUFJO1lBQ2hCQyxZQUFZLEVBQUUsSUFBSTtZQUNsQkMsUUFBUSxFQUFFLElBQUk7UUFDbEIsQ0FBQztJQUNMLENBQUMsTUFBTSxDQUFDO1FBQ0pKLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJWCxLQUFLO0lBQ3BCLENBQUM7SUFDRCxNQUFNLENBQUNVLEdBQUc7QUFDZCxDQUFDO1NBQ1FOLHVCQUF1QixDQUFDTSxHQUFHLEVBQUUsQ0FBQztJQUNuQyxFQUFFLEVBQUVBLEdBQUcsSUFBSUEsR0FBRyxDQUFDSyxVQUFVLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUNMLEdBQUc7SUFDZCxDQUFDLE1BQU0sQ0FBQztRQUNKLEdBQUcsQ0FBQ00s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aUIsSUFBSUwsT0FBTyxDQUFDSyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsRUFBRXJFLE1BQU0sQ0FBQyxDQUFDO2dCQUNsRVQsYUFBYSxDQUFDLENBQUM7b0JBQ1gyQixHQUFHO29CQUNIRSxNQUFNO29CQUNOSSxPQUFPO2dCQUNYLENBQUMsRUFBRXNDLFNBQVM7WUFDaEIsQ0FBQztZQUNEQyxhQUFhLENBQUNDLE9BQU87UUFDekIsQ0FBQyxNQUFNLEVBQUUsRUFBRUMsUUFBUSxJQUFJQSxRQUFRLElBQUksQ0FBQztZQUNoQyxFQUF1QztZQUN2Q3BELFNBQVMsQ0FBQ2MsR0FBRyxDQUFDbUMsU0FBUyxDQUFDM0MsRUFBRSxJQUFJRCxHQUFHO1FBQ3JDLENBQUMsTUFBTSxFQUFFLEVBQUUrQyxRQUFRLEtBQUtBLFFBQVEsSUFBSSxDQUFDO1lBQ2pDakQsVUFBVSxDQUFDQyxLQUFLO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUk7QUFDZixDQUFDO0FBQ0QsR0FBRyxDQUFDcUQsUUFBUSxHQUFHVCxNQUFNO0FBQ3JCL0Ysa0JBQWUsR0FBR3dHLFFBQVEsQ0FFMUIsQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvc2NyaXB0LmpzPzg3YjYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmluaXRTY3JpcHRMb2FkZXIgPSBpbml0U2NyaXB0TG9hZGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX2hlYWRNYW5hZ2VyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0XCIpO1xudmFyIF9oZWFkTWFuYWdlciA9IHJlcXVpcmUoXCIuL2hlYWQtbWFuYWdlclwiKTtcbnZhciBfcmVxdWVzdElkbGVDYWxsYmFjayA9IHJlcXVpcmUoXCIuL3JlcXVlc3QtaWRsZS1jYWxsYmFja1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIG9iaikge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7XG4gICAgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZXdPYmogPSB7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChvYmogIT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiB7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjLmdldCB8fCBkZXNjLnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgICAgIHJldHVybiBuZXdPYmo7XG4gICAgfVxufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbihzeW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHtcbiAgICB9O1xuICAgIHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcbiAgICB2YXIga2V5LCBpO1xuICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgICAgICBmb3IoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7XG4gICAgfTtcbiAgICB2YXIgdGFyZ2V0ID0ge1xuICAgIH07XG4gICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICAgIHZhciBrZXksIGk7XG4gICAgZm9yKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5jb25zdCBTY3JpcHRDYWNoZSA9IG5ldyBNYXAoKTtcbmNvbnN0IExvYWRDYWNoZSA9IG5ldyBTZXQoKTtcbmNvbnN0IGlnbm9yZVByb3BzID0gW1xuICAgICdvbkxvYWQnLFxuICAgICdkYW5nZXJvdXNseVNldElubmVySFRNTCcsXG4gICAgJ2NoaWxkcmVuJyxcbiAgICAnb25FcnJvcicsXG4gICAgJ3N0cmF0ZWd5JywgXG5dO1xuY29uc3QgbG9hZFNjcmlwdCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IHNyYyAsIGlkICwgb25Mb2FkID0oKT0+e1xuICAgIH0gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAsIGNoaWxkcmVuID0nJyAsIHN0cmF0ZWd5ID0nYWZ0ZXJJbnRlcmFjdGl2ZScgLCBvbkVycm9yICwgIH0gPSBwcm9wcztcbiAgICBjb25zdCBjYWNoZUtleSA9IGlkIHx8IHNyYztcbiAgICAvLyBTY3JpcHQgaGFzIGFscmVhZHkgbG9hZGVkXG4gICAgaWYgKGNhY2hlS2V5ICYmIExvYWRDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ29udGVudHMgb2YgdGhpcyBzY3JpcHQgYXJlIGFscmVhZHkgbG9hZGluZy9sb2FkZWRcbiAgICBpZiAoU2NyaXB0Q2FjaGUuaGFzKHNyYykpIHtcbiAgICAgICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgICAgIC8vIEV4ZWN1dGUgb25Mb2FkIHNpbmNlIHRoZSBzY3JpcHQgbG9hZGluZyBoYXMgYmVndW5cbiAgICAgICAgU2NyaXB0Q2FjaGUuZ2V0KHNyYykudGhlbihvbkxvYWQsIG9uRXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgY29uc3QgbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgaWYgKG9uTG9hZCkge1xuICAgICAgICAgICAgICAgIG9uTG9hZC5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc3JjKSB7XG4gICAgICAgIFNjcmlwdENhY2hlLnNldChzcmMsIGxvYWRQcm9taXNlKTtcbiAgICB9XG4gICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCAnJztcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJyA/IGNoaWxkcmVuIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6ICcnO1xuICAgIH0gZWxzZSBpZiAoc3JjKSB7XG4gICAgICAgIGVsLnNyYyA9IHNyYztcbiAgICB9XG4gICAgZm9yIChjb25zdCBbaywgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSl7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGlnbm9yZVByb3BzLmluY2x1ZGVzKGspKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhdHRyID0gX2hlYWRNYW5hZ2VyLkRPTUF0dHJpYnV0ZU5hbWVzW2tdIHx8IGsudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHZhbHVlKTtcbiAgICB9XG4gICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLW5zY3JpcHQnLCBzdHJhdGVneSk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCk7XG59O1xuZnVuY3Rpb24gaGFuZGxlQ2xpZW50U2NyaXB0TG9hZChwcm9wcykge1xuICAgIGNvbnN0IHsgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAgfSA9IHByb3BzO1xuICAgIGlmIChzdHJhdGVneSA9PT0gJ2FmdGVySW50ZXJhY3RpdmUnKSB7XG4gICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kgPT09ICdsYXp5T25sb2FkJykge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpPT57XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb2FkTGF6eVNjcmlwdChwcm9wcykge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+bG9hZFNjcmlwdChwcm9wcylcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpPT57XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbml0U2NyaXB0TG9hZGVyKHNjcmlwdExvYWRlckl0ZW1zKSB7XG4gICAgc2NyaXB0TG9hZGVySXRlbXMuZm9yRWFjaChoYW5kbGVDbGllbnRTY3JpcHRMb2FkKTtcbn1cbmZ1bmN0aW9uIFNjcmlwdChwcm9wcykge1xuICAgIGNvbnN0IHsgc3JjID0nJyAsIG9uTG9hZCA9KCk9PntcbiAgICB9ICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgLCBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICwgb25FcnJvciAgfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIFtcInNyY1wiLCBcIm9uTG9hZFwiLCBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIsIFwic3RyYXRlZ3lcIiwgXCJvbkVycm9yXCJdKTtcbiAgICAvLyBDb250ZXh0IGlzIGF2YWlsYWJsZSBvbmx5IGR1cmluZyBTU1JcbiAgICBjb25zdCB7IHVwZGF0ZVNjcmlwdHMgLCBzY3JpcHRzICwgZ2V0SXNTc3IgIH0gPSAoMCwgX3JlYWN0KS51c2VDb250ZXh0KF9oZWFkTWFuYWdlckNvbnRleHQuSGVhZE1hbmFnZXJDb250ZXh0KTtcbiAgICAoMCwgX3JlYWN0KS51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnYWZ0ZXJJbnRlcmFjdGl2ZScpIHtcbiAgICAgICAgICAgIGxvYWRTY3JpcHQocHJvcHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnbGF6eU9ubG9hZCcpIHtcbiAgICAgICAgICAgIGxvYWRMYXp5U2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgXSk7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnKSB7XG4gICAgICAgIGlmICh1cGRhdGVTY3JpcHRzKSB7XG4gICAgICAgICAgICBzY3JpcHRzLmJlZm9yZUludGVyYWN0aXZlID0gKHNjcmlwdHMuYmVmb3JlSW50ZXJhY3RpdmUgfHwgW10pLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgb25Mb2FkLFxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yXG4gICAgICAgICAgICAgICAgfSwgcmVzdFByb3BzKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHVwZGF0ZVNjcmlwdHMoc2NyaXB0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgZ2V0SXNTc3IoKSkge1xuICAgICAgICAgICAgLy8gU2NyaXB0IGhhcyBhbHJlYWR5IGxvYWRlZCBkdXJpbmcgU1NSXG4gICAgICAgICAgICBMb2FkQ2FjaGUuYWRkKHJlc3RQcm9wcy5pZCB8fCBzcmMpO1xuICAgICAgICB9IGVsc2UgaWYgKGdldElzU3NyICYmICFnZXRJc1NzcigpKSB7XG4gICAgICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbnZhciBfZGVmYXVsdCA9IFNjcmlwdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY3JpcHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiaW5pdFNjcmlwdExvYWRlciIsImRlZmF1bHQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaGVhZE1hbmFnZXJDb250ZXh0IiwiX2hlYWRNYW5hZ2VyIiwiX3JlcXVlc3RJZGxlQ2FsbGJhY2siLCJfZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfX2VzTW9kdWxlIiwibmV3T2JqIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsInNldCIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJjb25jYXQiLCJmaWx0ZXIiLCJzeW0iLCJmb3JFYWNoIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiU2NyaXB0Q2FjaGUiLCJNYXAiLCJMb2FkQ2FjaGUiLCJTZXQiLCJpZ25vcmVQcm9wcyIsImxvYWRTY3JpcHQiLCJwcm9wcyIsInNyYyIsImlkIiwib25Mb2FkIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZHJlbiIsInN0cmF0ZWd5Iiwib25FcnJvciIsImNhY2hlS2V5IiwiaGFzIiwiYWRkIiwidGhlbiIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibG9hZFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiY2F0Y2giLCJpbm5lckhUTUwiLCJfX2h0bWwiLCJ0ZXh0Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJrIiwiZW50cmllcyIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiYXR0ciIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJoYW5kbGVDbGllbnRTY3JpcHRMb2FkIiwid2luZG93IiwicmVxdWVzdElkbGVDYWxsYmFjayIsImxvYWRMYXp5U2NyaXB0IiwicmVhZHlTdGF0ZSIsInNjcmlwdExvYWRlckl0ZW1zIiwiU2NyaXB0IiwicmVzdFByb3BzIiwidXBkYXRlU2NyaXB0cyIsInNjcmlwdHMiLCJnZXRJc1NzciIsInVzZUNvbnRleHQiLCJIZWFkTWFuYWdlckNvbnRleHQiLCJ1c2VFZmZlY3QiLCJiZWZvcmVJbnRlcmFjdGl2ZSIsIl9kZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../../node_modules/next/dist/client/script.js\n");
|
|
43
|
+
|
|
44
|
+
/***/ }),
|
|
45
|
+
|
|
46
|
+
/***/ "../../../../node_modules/next/dist/pages/_document.js":
|
|
47
|
+
/*!*************************************************************!*\
|
|
48
|
+
!*** ../../../../node_modules/next/dist/pages/_document.js ***!
|
|
49
|
+
\*************************************************************/
|
|
50
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
51
|
+
|
|
52
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"DocumentContext\", ({\n enumerable: true,\n get: function() {\n return _utils.DocumentContext;\n }\n}));\nObject.defineProperty(exports, \"DocumentInitialProps\", ({\n enumerable: true,\n get: function() {\n return _utils.DocumentInitialProps;\n }\n}));\nObject.defineProperty(exports, \"DocumentProps\", ({\n enumerable: true,\n get: function() {\n return _utils.DocumentProps;\n }\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 _utils = __webpack_require__(/*! ../shared/lib/utils */ \"../shared/lib/utils\");\nvar _getPageFiles = __webpack_require__(/*! ../server/get-page-files */ \"../server/get-page-files\");\nvar _utils1 = __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\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {\n };\n if (obj != null) {\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {\n };\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\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 , } = context;\n return buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n ).map((polyfill)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: polyfill,\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || undefined,\n noModule: true,\n src: `${assetPrefix}/_next/${polyfill}${devOnlyCacheBusterQueryString}`\n })\n );\n}\nfunction getPreNextScripts(context, props) {\n const { scriptLoader , disableOptimizedLoading } = context;\n return (scriptLoader.beforeInteractive || []).map((file, index)=>{\n const { strategy , ...scriptProps } = file;\n return(/*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({\n }, scriptProps, {\n key: scriptProps.src || index,\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: props.crossOrigin || undefined\n })));\n });\n}\nfunction getDynamicChunks(context, props, files) {\n const { dynamicImports , assetPrefix , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , } = 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 || undefined\n }));\n });\n}\nfunction getScripts(context, props, files) {\n var ref;\n const { assetPrefix , buildManifest , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , } = context;\n const normalScripts = files.allFiles.filter((file)=>file.endsWith('.js')\n );\n const lowPriorityScripts = (ref = buildManifest.lowPriorityFiles) === null || ref === void 0 ? void 0 : ref.filter((file)=>file.endsWith('.js')\n );\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 || undefined\n }));\n });\n}\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 Html(props) {\n const { inAmpMode , docComponentsRendered , locale } = (0, _react).useContext(_utils.HtmlContext);\n docComponentsRendered.Html = true;\n return(/*#__PURE__*/ _react.default.createElement(\"html\", Object.assign({\n }, 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, ref1;\n return el === null || el === void 0 ? void 0 : (ref = el.props) === null || ref === void 0 ? void 0 : (ref1 = ref.dangerouslySetInnerHTML) === null || ref1 === void 0 ? void 0 : ref1.__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 );\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\n ).join('').replace(/\\/\\*# sourceMappingURL=.*\\*\\//g, '').replace(/\\/\\*@ sourceURL=.*?\\*\\//g, '')\n }\n }));\n}\nclass Head extends _react.Component {\n getCssLinks(files6) {\n const { assetPrefix , devOnlyCacheBusterQueryString , dynamicImports } = this.context;\n const cssFiles = files6.allFiles.filter((f)=>f.endsWith('.css')\n );\n const sharedFiles = new Set(files6.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 )));\n if (dynamicCssFiles.length) {\n const existing = new Set(cssFiles);\n dynamicCssFiles = dynamicCssFiles.filter((f)=>!(existing.has(f) || sharedFiles.has(f))\n );\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 (true) {\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 || undefined\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 || undefined,\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 } = 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 || undefined\n }));\n }) // Filter out nulled scripts\n .filter(Boolean);\n }\n getPreloadMainLinks(files1) {\n const { assetPrefix , devOnlyCacheBusterQueryString , scriptLoader } = this.context;\n const preloadFiles = files1.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 || undefined\n })\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 || undefined\n })\n ), \n ];\n }\n getDynamicChunks(files2) {\n return getDynamicChunks(this.context, this.props, files2);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files3) {\n return getScripts(this.context, this.props, files3);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n handleDocumentScriptLoaderItems(children) {\n const { scriptLoader } = this.context;\n const scriptLoaderItems = [];\n const filteredChildren = [];\n _react.default.Children.forEach(children, (child)=>{\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 ].includes(child.props.strategy)) {\n scriptLoaderItems.push(child.props);\n return;\n }\n }\n filteredChildren.push(child);\n });\n this.context.__NEXT_DATA__.scriptLoader = scriptLoaderItems;\n return filteredChildren;\n }\n makeStylesheetInert(node) {\n return _react.default.Children.map(node, (c)=>{\n if (c.type === 'link' && c.props['href'] && _constants.OPTIMIZED_FONT_PROVIDERS.some(({ url })=>c.props['href'].startsWith(url)\n )) {\n const newProps = {\n ...c.props || {\n }\n };\n newProps['data-href'] = newProps['href'];\n newProps['href'] = undefined;\n return(/*#__PURE__*/ _react.default.cloneElement(c, newProps));\n } else if (c.props && c.props['children']) {\n c.props['children'] = this.makeStylesheetInert(c.props['children']);\n }\n return c;\n });\n }\n render() {\n const { styles , ampPath , inAmpMode , hybridAmp , canonicalBase , __NEXT_DATA__ , dangerousAsPath , headTags , unstable_runtimeJS , unstable_JsPreload , disableOptimizedLoading , useMaybeDeferContent , } = 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 || child === void 0 ? void 0 : (ref = child.props) === null || ref === void 0 ? void 0 : ref['data-react-helmet'];\n if (!isReactHelmet) {\n var ref6;\n if ((child === null || child === void 0 ? 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 || child === void 0 ? void 0 : child.type) === 'meta' && (child === null || child === void 0 ? void 0 : (ref6 = child.props) === null || ref6 === void 0 ? void 0 : ref6.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 children = this.handleDocumentScriptLoaderItems(children);\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 // Must use nested component to allow use of a custom hook\n const DeferrableHead = ()=>{\n const getDynamicHeadContent = ()=>{\n return(/*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, head, /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-head-count\",\n content: _react.default.Children.count(head || []).toString()\n })));\n };\n const getDynamicScriptPreloads = ()=>{\n return(/*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !disableRuntimeJS && !disableJsPreload && this.getPreloadDynamicChunks(), !disableRuntimeJS && !disableJsPreload && this.getPreloadMainLinks(files)));\n };\n const getDynamicScriptContent = ()=>{\n return(/*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !disableOptimizedLoading && !disableRuntimeJS && this.getPreNextScripts(), !disableOptimizedLoading && !disableRuntimeJS && this.getDynamicChunks(files), !disableOptimizedLoading && !disableRuntimeJS && this.getScripts(files)));\n };\n const [isDeferred] = useMaybeDeferContent('HEAD', ()=>{\n return(/*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, getDynamicHeadContent(), getDynamicScriptPreloads(), getDynamicScriptContent()));\n });\n var _nonce, _nonce1;\n return(/*#__PURE__*/ _react.default.createElement(\"head\", Object.assign({\n }, 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 }))), children, false && /*#__PURE__*/ 0, !isDeferred && getDynamicHeadContent(), 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, _utils1).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 }), true && this.getCssLinks(files), true && /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-n-css\": (_nonce = this.props.nonce) !== null && _nonce !== void 0 ? _nonce : ''\n }), false && /*#__PURE__*/ 0, !isDeferred && getDynamicScriptPreloads(), !disableOptimizedLoading && !disableRuntimeJS && this.getPolyfillScripts(), !isDeferred && getDynamicScriptContent(), false && 0, false && /*#__PURE__*/ 0, 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, {\n }, ...headTags || [])));\n };\n return(/*#__PURE__*/ _react.default.createElement(DeferrableHead, null));\n }\n}\nexports.Head = Head;\nHead.contextType = _utils.HtmlContext;\nfunction Main() {\n const { inAmpMode , docComponentsRendered } = (0, _react).useContext(_utils.HtmlContext);\n docComponentsRendered.Main = true;\n if (inAmpMode) return(/*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, _constants.BODY_RENDER_TARGET));\n return(/*#__PURE__*/ _react.default.createElement(\"div\", {\n id: \"__next\"\n }, _constants.BODY_RENDER_TARGET));\n}\nclass NextScript extends _react.Component {\n getDynamicChunks(files4) {\n return getDynamicChunks(this.context, this.props, files4);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files5) {\n return getScripts(this.context, this.props, files5);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n static getInlineScriptSource(context) {\n const { __NEXT_DATA__ } = context;\n try {\n const data = JSON.stringify(__NEXT_DATA__);\n if (true) {\n const bytes = Buffer.from(data).byteLength;\n const prettyBytes = __webpack_require__(/*! ../lib/pretty-bytes */ \"../../../../node_modules/next/dist/lib/pretty-bytes.js\")[\"default\"];\n if (bytes > 128 * 1000) {\n console.warn(`Warning: data for page \"${__NEXT_DATA__.page}\" is ${prettyBytes(bytes)}, this amount of data can reduce performance.\\nSee more info here: https://nextjs.org/docs/messages/large-page-data`);\n }\n }\n return (0, _htmlescape).htmlEscapeJsonString(data);\n } catch (err) {\n if ((0, _isError).default(err) && err.message.indexOf('circular structure')) {\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 , useMaybeDeferContent , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n docComponentsRendered.NextScript = true;\n // Must nest component to use custom hook\n const DeferrableNextScript = ()=>{\n const [, content] = useMaybeDeferContent('NEXT_SCRIPT', ()=>{\n if (inAmpMode) {\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 || undefined,\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 || undefined,\n \"data-ampdevmode\": true\n })\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 || undefined\n })\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 || undefined,\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 if (inAmpMode && \"development\" === 'production') {}\n return content;\n };\n return(/*#__PURE__*/ _react.default.createElement(DeferrableNextScript, null));\n }\n}\nexports.NextScript = NextScript;\nNextScript.contextType = _utils.HtmlContext;\nNextScript.safariNomoduleFix = '!function(){var e=document,t=e.createElement(\"script\");if(!(\"noModule\"in t)&&\"onbeforeload\"in t){var n=!1;e.addEventListener(\"beforeload\",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute(\"nomodule\")||!n)return;e.preventDefault()},!0),t.type=\"module\",t.src=\".\",e.head.appendChild(t),t.remove()}}();';\nfunction getAmpPath(ampPath, asPath) {\n return ampPath || `${asPath}${asPath.includes('?') ? '&' : '?'}amp=1`;\n} //# sourceMappingURL=_document.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9wYWdlcy9fZG9jdW1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQVk7QUFDWkEsOENBQTZDLENBQUM7SUFDMUNHLEtBQUssRUFBRSxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILG1EQUFrRCxDQUFDO0lBQy9DSSxVQUFVLEVBQUUsSUFBSTtJQUNoQkMsR0FBRyxFQUFFLFFBQVEsR0FBRyxDQUFDO1FBQ2IsTUFBTSxDQUFDQyxNQUFNLENBQUNDLGVBQWU7SUFDakMsQ0FBQztBQUNMLENBQUMsRUFBQztBQUNGUCx3REFBdUQsQ0FBQztJQUNwREksVUFBVSxFQUFFLElBQUk7SUFDaEJDLEdBQUcsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUNiLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDRSxvQkFBb0I7SUFDdEMsQ0FBQztBQUNMLENBQUMsRUFBQztBQUNGUixpREFBZ0QsQ0FBQztJQUM3Q0ksVUFBVSxFQUFFLElBQUk7SUFDaEJDLEdBQUcsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUNiLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDRyxhQUFhO0lBQy9CLENBQUM7QUFDTCxDQUFDLEVBQUM7QUFDRlAsWUFBWSxHQUFHUSxJQUFJO0FBQ25CUixZQUFZLEdBQUdTLElBQUk7QUFDbkJULGtCQUFlLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDeEIsR0FBRyxDQUFDVyxNQUFNLEdBQUdDLHVCQUF1QixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPO0FBQ3BELEdBQUcsQ0FBQ0MsVUFBVSxHQUFHRCxtQkFBTyxDQUFDLHdEQUF5QjtBQUNsRCxHQUFHLENBQUNULE1BQU0sR0FBR1MsbUJBQU8sQ0FBQyxnREFBcUI7QUFDMUMsR0FBRyxDQUFDRSxhQUFhLEdBQUdGLG1CQUFPLENBQUMsMERBQTBCO0FBQ3RELEdBQUcsQ0FBQ0csT0FBTyxHQUFHSCxtQkFBTyxDQUFDLHdDQUFpQjtBQUN2QyxHQUFHLENBQUNJLFdBQVcsR0FBR0osbUJBQU8sQ0FB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LGdCQUFnQixDQUFDQyxLQUFLLEdBQUd4Qix1QkFBdUIsS0FBS2lILGdCQUFnQixJQUFJLElBQUksQ0FBQ25GLFVBQVUsQ0FBQ04sS0FBSztZQUNoVCxDQUFDO1lBQ0QsRUFBRSxFQUFFbkMsU0FBUyxJQUFJcUIsYUFBb0IsS0FBSyxDQUFZLGFBQUUsRUFFdkQ7WUFDRCxNQUFNLENBQUM0SCxPQUFPO1FBQ2xCLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBYSxZQUFDeEssTUFBTSxDQUFDRCxPQUFPLENBQUN5QyxhQUFhLENBQUMwSixvQkFBb0IsRUFBRSxJQUFJO0lBQ2hGLENBQUM7O0FBRUw3TSxrQkFBa0IsR0FBR3VGLFVBQVU7QUFDL0JBLFVBQVUsQ0FBQ3dHLFdBQVcsR0FBRzNMLE1BQU0sQ0FBQ3VGLFdBQVc7QUFDM0NKLFVBQVUsQ0FBQ3lILGlCQUFpQixHQUFHLENBQTBUO1NBQ2hWcEIsVUFBVSxDQUFDdEMsT0FBTyxFQUFFMkQsTUFBTSxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDM0QsT0FBTyxPQUFPMkQsTUFBTSxHQUFHQSxNQUFNLENBQUN6SSxRQUFRLENBQUMsQ0FBRyxNQUFJLENBQUcsS0FBRyxDQUFHLEdBQUMsS0FBSztBQUN4RSxDQUFDLENBRW9DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvcGFnZXMvX2RvY3VtZW50LmpzP2ZkN2YiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudENvbnRleHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF91dGlscy5Eb2N1bWVudENvbnRleHQ7XG4gICAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudEluaXRpYWxQcm9wc1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3V0aWxzLkRvY3VtZW50SW5pdGlhbFByb3BzO1xuICAgIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRG9jdW1lbnRQcm9wc1wiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3V0aWxzLkRvY3VtZW50UHJvcHM7XG4gICAgfVxufSk7XG5leHBvcnRzLkh0bWwgPSBIdG1sO1xuZXhwb3J0cy5NYWluID0gTWFpbjtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9jb25zdGFudHNcIik7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvdXRpbHNcIik7XG52YXIgX2dldFBhZ2VGaWxlcyA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvZ2V0LXBhZ2UtZmlsZXNcIik7XG52YXIgX3V0aWxzMSA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvdXRpbHNcIik7XG52YXIgX2h0bWxlc2NhcGUgPSByZXF1aXJlKFwiLi4vc2VydmVyL2h0bWxlc2NhcGVcIik7XG52YXIgX3NjcmlwdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NsaWVudC9zY3JpcHRcIikpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbmV3T2JqID0ge1xuICAgICAgICB9O1xuICAgICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDoge1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RmlsZXMoYnVpbGRNYW5pZmVzdCwgcGF0aG5hbWUsIGluQW1wTW9kZSkge1xuICAgIGNvbnN0IHNoYXJlZEZpbGVzID0gKDAsIF9nZXRQYWdlRmlsZXMpLmdldFBhZ2VGaWxlcyhidWlsZE1hbmlmZXN0LCAnL19hcHAnKTtcbiAgICBjb25zdCBwYWdlRmlsZXMgPSBpbkFtcE1vZGUgPyBbXSA6ICgwLCBfZ2V0UGFnZUZpbGVzKS5nZXRQYWdlRmlsZXMoYnVpbGRNYW5pZmVzdCwgcGF0aG5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNoYXJlZEZpbGVzLFxuICAgICAgICBwYWdlRmlsZXMsXG4gICAgICAgIGFsbEZpbGVzOiBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtcbiAgICAgICAgICAgICAgICAuLi5zaGFyZWRGaWxlcyxcbiAgICAgICAgICAgICAgICAuLi5wYWdlRmlsZXNcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF1cbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0UG9seWZpbGxTY3JpcHRzKGNvbnRleHQsIHByb3BzKSB7XG4gICAgLy8gcG9seWZpbGxzLmpzIGhhcyB0byBiZSByZW5kZXJlZCBhcyBub21vZHVsZSB3aXRob3V0IGFzeW5jXG4gICAgLy8gSXQgYWxzbyBoYXMgdG8gYmUgdGhlIGZpcnN0IHNjcmlwdCB0byBsb2FkXG4gICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGJ1aWxkTWFuaWZlc3QgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgIH0gPSBjb250ZXh0O1xuICAgIHJldHVybiBidWlsZE1hbmlmZXN0LnBvbHlmaWxsRmlsZXMuZmlsdGVyKChwb2x5ZmlsbCk9PnBvbHlmaWxsLmVuZHNXaXRoKCcuanMnKSAmJiAhcG9seWZpbGwuZW5kc1dpdGgoJy5tb2R1bGUuanMnKVxuICAgICkubWFwKChwb2x5ZmlsbCk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBrZXk6IHBvbHlmaWxsLFxuICAgICAgICAgICAgZGVmZXI6ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyxcbiAgICAgICAgICAgIG5vbmNlOiBwcm9wcy5ub25jZSxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOLFxuICAgICAgICAgICAgbm9Nb2R1bGU6IHRydWUsXG4gICAgICAgICAgICBzcmM6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke3BvbHlmaWxsfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YFxuICAgICAgICB9KVxuICAgICk7XG59XG5mdW5jdGlvbiBnZXRQcmVOZXh0U2NyaXB0cyhjb250ZXh0LCBwcm9wcykge1xuICAgIGNvbnN0IHsgc2NyaXB0TG9hZGVyICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgIH0gPSBjb250ZXh0O1xuICAgIHJldHVybiAoc2NyaXB0TG9hZGVyLmJlZm9yZUludGVyYWN0aXZlIHx8IFtdKS5tYXAoKGZpbGUsIGluZGV4KT0+e1xuICAgICAgICBjb25zdCB7IHN0cmF0ZWd5ICwgLi4uc2NyaXB0UHJvcHMgfSA9IGZpbGU7XG4gICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIH0sIHNjcmlwdFByb3BzLCB7XG4gICAgICAgICAgICBrZXk6IHNjcmlwdFByb3BzLnNyYyB8fCBpbmRleCxcbiAgICAgICAgICAgIGRlZmVyOiAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAgICAgICBcImRhdGEtbnNjcmlwdFwiOiBcImJlZm9yZUludGVyYWN0aXZlXCIsXG4gICAgICAgICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTlxuICAgICAgICB9KSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0RHluYW1pY0NodW5rcyhjb250ZXh0LCBwcm9wcywgZmlsZXMpIHtcbiAgICBjb25zdCB7IGR5bmFtaWNJbXBvcnRzICwgYXNzZXRQcmVmaXggLCBpc0RldmVsb3BtZW50ICwgZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmcgLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAsICB9ID0gY29udGV4dDtcbiAgICByZXR1cm4gZHluYW1pY0ltcG9ydHMubWFwKChmaWxlKT0+e1xuICAgICAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5qcycpIHx8IGZpbGVzLmFsbEZpbGVzLmluY2x1ZGVzKGZpbGUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBhc3luYzogIWlzRGV2ZWxvcG1lbnQgJiYgZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBkZWZlcjogIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU5cbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0U2NyaXB0cyhjb250ZXh0LCBwcm9wcywgZmlsZXMpIHtcbiAgICB2YXIgcmVmO1xuICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBidWlsZE1hbmlmZXN0ICwgaXNEZXZlbG9wbWVudCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgLCAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3Qgbm9ybWFsU2NyaXB0cyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZmlsZSk9PmZpbGUuZW5kc1dpdGgoJy5qcycpXG4gICAgKTtcbiAgICBjb25zdCBsb3dQcmlvcml0eVNjcmlwdHMgPSAocmVmID0gYnVpbGRNYW5pZmVzdC5sb3dQcmlvcml0eUZpbGVzKSA9PT0gbnVsbCB8fCByZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZi5maWx0ZXIoKGZpbGUpPT5maWxlLmVuZHNXaXRoKCcuanMnKVxuICAgICk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLi4ubm9ybWFsU2NyaXB0cyxcbiAgICAgICAgLi4ubG93UHJpb3JpdHlTY3JpcHRzXG4gICAgXS5tYXAoKGZpbGUpPT57XG4gICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgYXN5bmM6ICFpc0RldmVsb3BtZW50ICYmIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAgZGVmZXI6ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOXG4gICAgICAgIH0pKTtcbiAgICB9KTtcbn1cbmNsYXNzIERvY3VtZW50IGV4dGVuZHMgX3JlYWN0LkNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAqIGBnZXRJbml0aWFsUHJvcHNgIGhvb2sgcmV0dXJucyB0aGUgY29udGV4dCBvYmplY3Qgd2l0aCB0aGUgYWRkaXRpb24gb2YgYHJlbmRlclBhZ2VgLlxuICAgKiBgcmVuZGVyUGFnZWAgY2FsbGJhY2sgZXhlY3V0ZXMgYFJlYWN0YCByZW5kZXJpbmcgbG9naWMgc3luY2hyb25vdXNseSB0byBzdXBwb3J0IHNlcnZlci1yZW5kZXJpbmcgd3JhcHBlcnNcbiAgICovIHN0YXRpYyBnZXRJbml0aWFsUHJvcHMoY3R4KSB7XG4gICAgICAgIHJldHVybiBjdHguZGVmYXVsdEdldEluaXRpYWxQcm9wcyhjdHgpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSHRtbCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEhlYWQsIG51bGwpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChNYWluLCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KE5leHRTY3JpcHQsIG51bGwpKSkpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IERvY3VtZW50O1xuZnVuY3Rpb24gSHRtbChwcm9wcykge1xuICAgIGNvbnN0IHsgaW5BbXBNb2RlICwgZG9jQ29tcG9uZW50c1JlbmRlcmVkICwgbG9jYWxlICB9ID0gKDAsIF9yZWFjdCkudXNlQ29udGV4dChfdXRpbHMuSHRtbENvbnRleHQpO1xuICAgIGRvY0NvbXBvbmVudHNSZW5kZXJlZC5IdG1sID0gdHJ1ZTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaHRtbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICB9LCBwcm9wcywge1xuICAgICAgICBsYW5nOiBwcm9wcy5sYW5nIHx8IGxvY2FsZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGFtcDogaW5BbXBNb2RlID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIFwiZGF0YS1hbXBkZXZtb2RlXCI6IGluQW1wTW9kZSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gJycgOiB1bmRlZmluZWRcbiAgICB9KSkpO1xufVxuZnVuY3Rpb24gQW1wU3R5bGVzKHsgc3R5bGVzICB9KSB7XG4gICAgaWYgKCFzdHlsZXMpIHJldHVybiBudWxsO1xuICAgIC8vIHRyeSB0byBwYXJzZSBzdHlsZXMgZnJvbSBmcmFnbWVudCBmb3IgYmFja3dhcmRzIGNvbXBhdFxuICAgIGNvbnN0IGN1clN0eWxlcyA9IEFycmF5LmlzQXJyYXkoc3R5bGVzKSA/IHN0eWxlcyA6IFtdO1xuICAgIGlmICgvLyBAdHMtaWdub3JlIFByb3BlcnR5ICdwcm9wcycgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSBSZWFjdEVsZW1lbnRcbiAgICBzdHlsZXMucHJvcHMgJiYgLy8gQHRzLWlnbm9yZSBQcm9wZXJ0eSAncHJvcHMnIGRvZXMgbm90IGV4aXN0IG9uIHR5cGUgUmVhY3RFbGVtZW50XG4gICAgQXJyYXkuaXNBcnJheShzdHlsZXMucHJvcHMuY2hpbGRyZW4pKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0eWxlcyA9IChlbCk9PntcbiAgICAgICAgICAgIHZhciByZWYsIHJlZjE7XG4gICAgICAgICAgICByZXR1cm4gZWwgPT09IG51bGwgfHwgZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChyZWYgPSBlbC5wcm9wcykgPT09IG51bGwgfHwgcmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiAocmVmMSA9IHJlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCkgPT09IG51bGwgfHwgcmVmMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVmMS5fX2h0bWw7XG4gICAgICAgIH07XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgUHJvcGVydHkgJ3Byb3BzJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlIFJlYWN0RWxlbWVudFxuICAgICAgICBzdHlsZXMucHJvcHMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBjaGlsZC5mb3JFYWNoKChlbCk9Pmhhc1N0eWxlcyhlbCkgJiYgY3VyU3R5bGVzLnB1c2goZWwpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzU3R5bGVzKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGN1clN0eWxlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qIEFkZCBjdXN0b20gc3R5bGVzIGJlZm9yZSBBTVAgc3R5bGVzIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBvdmVycmlkZXMgKi8gcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgXCJhbXAtY3VzdG9tXCI6IFwiXCIsXG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICBfX2h0bWw6IGN1clN0eWxlcy5tYXAoKHN0eWxlKT0+c3R5bGUucHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sXG4gICAgICAgICAgICApLmpvaW4oJycpLnJlcGxhY2UoL1xcL1xcKiMgc291cmNlTWFwcGluZ1VSTD0uKlxcKlxcLy9nLCAnJykucmVwbGFjZSgvXFwvXFwqQCBzb3VyY2VVUkw9Lio/XFwqXFwvL2csICcnKVxuICAgICAgICB9XG4gICAgfSkpO1xufVxuY2xhc3MgSGVhZCBleHRlbmRzIF9yZWFjdC5Db21wb25lbnQge1xuICAgIGdldENzc0xpbmtzKGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGR5bmFtaWNJbXBvcnRzICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCBjc3NGaWxlcyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZik9PmYuZW5kc1dpdGgoJy5jc3MnKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzaGFyZWRGaWxlcyA9IG5ldyBTZXQoZmlsZXMuc2hhcmVkRmlsZXMpO1xuICAgICAgICAvLyBVbm1hbmFnZWQgZmlsZXMgYXJlIENTUyBmaWxlcyB0aGF0IHdpbGwgYmUgaGFuZGxlZCBkaXJlY3RseSBieSB0aGVcbiAgICAgICAgLy8gd2VicGFjayBydW50aW1lIChgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5gKS5cbiAgICAgICAgbGV0IHVubWFuZ2VkRmlsZXMgPSBuZXcgU2V0KFtdKTtcbiAgICAgICAgbGV0IGR5bmFtaWNDc3NGaWxlcyA9IEFycmF5LmZyb20obmV3IFNldChkeW5hbWljSW1wb3J0cy5maWx0ZXIoKGZpbGUpPT5maWxlLmVuZHNXaXRoKCcuY3NzJylcbiAgICAgICAgKSkpO1xuICAgICAgICBpZiAoZHluYW1pY0Nzc0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KGNzc0ZpbGVzKTtcbiAgICAgICAgICAgIGR5bmFtaWNDc3NGaWxlcyA9IGR5bmFtaWNDc3NGaWxlcy5maWx0ZXIoKGYpPT4hKGV4aXN0aW5nLmhhcyhmKSB8fCBzaGFyZWRGaWxlcy5oYXMoZikpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdW5tYW5nZWRGaWxlcyA9IG5ldyBTZXQoZHluYW1pY0Nzc0ZpbGVzKTtcbiAgICAgICAgICAgIGNzc0ZpbGVzLnB1c2goLi4uZHluYW1pY0Nzc0ZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzTGlua0VsZW1lbnRzID0gW107XG4gICAgICAgIGNzc0ZpbGVzLmZvckVhY2goKGZpbGUpPT57XG4gICAgICAgICAgICBjb25zdCBpc1NoYXJlZEZpbGUgPSBzaGFyZWRGaWxlcy5oYXMoZmlsZSk7XG4gICAgICAgICAgICBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9DU1MpIHtcbiAgICAgICAgICAgICAgICBjc3NMaW5rRWxlbWVudHMucHVzaCgvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBgJHtmaWxlfS1wcmVsb2FkYCxcbiAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgICAgIGFzOiBcInN0eWxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU5cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc1VubWFuYWdlZEZpbGUgPSB1bm1hbmdlZEZpbGVzLmhhcyhmaWxlKTtcbiAgICAgICAgICAgIGNzc0xpbmtFbGVtZW50cy5wdXNoKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICByZWw6IFwic3R5bGVzaGVldFwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTixcbiAgICAgICAgICAgICAgICBcImRhdGEtbi1nXCI6IGlzVW5tYW5hZ2VkRmlsZSA/IHVuZGVmaW5lZCA6IGlzU2hhcmVkRmlsZSA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1uLXBcIjogaXNVbm1hbmFnZWRGaWxlID8gdW5kZWZpbmVkIDogaXNTaGFyZWRGaWxlID8gdW5kZWZpbmVkIDogJydcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyAmJiBwcm9jZXNzLmVudi5fX05FWFRfT1BUSU1JWkVfRk9OVFMpIHtcbiAgICAgICAgICAgIGNzc0xpbmtFbGVtZW50cyA9IHRoaXMubWFrZVN0eWxlc2hlZXRJbmVydChjc3NMaW5rRWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjc3NMaW5rRWxlbWVudHMubGVuZ3RoID09PSAwID8gbnVsbCA6IGNzc0xpbmtFbGVtZW50cztcbiAgICB9XG4gICAgZ2V0UHJlbG9hZER5bmFtaWNDaHVua3MoKSB7XG4gICAgICAgIGNvbnN0IHsgZHluYW1pY0ltcG9ydHMgLCBhc3NldFByZWZpeCAsIGRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICByZXR1cm4gZHluYW1pY0ltcG9ydHMubWFwKChmaWxlKT0+e1xuICAgICAgICAgICAgaWYgKCFmaWxlLmVuZHNXaXRoKCcuanMnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgICAgIGhyZWY6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgYXM6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTlxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS8vIEZpbHRlciBvdXQgbnVsbGVkIHNjcmlwdHNcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG4gICAgZ2V0UHJlbG9hZE1haW5MaW5rcyhmaWxlcykge1xuICAgICAgICBjb25zdCB7IGFzc2V0UHJlZml4ICwgZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmcgLCBzY3JpcHRMb2FkZXIgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHByZWxvYWRGaWxlcyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZmlsZSk9PntcbiAgICAgICAgICAgIHJldHVybiBmaWxlLmVuZHNXaXRoKCcuanMnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi4oc2NyaXB0TG9hZGVyLmJlZm9yZUludGVyYWN0aXZlIHx8IFtdKS5tYXAoKGZpbGUpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBmaWxlLnNyYyxcbiAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IGZpbGUuc3JjLFxuICAgICAgICAgICAgICAgICAgICBhczogXCJzY3JpcHRcIixcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucHJlbG9hZEZpbGVzLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgICAgICBhczogXCJzY3JpcHRcIixcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLCBcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0RHluYW1pY0NodW5rcyhmaWxlcykge1xuICAgICAgICByZXR1cm4gZ2V0RHluYW1pY0NodW5rcyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMsIGZpbGVzKTtcbiAgICB9XG4gICAgZ2V0UHJlTmV4dFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVOZXh0U2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBnZXRTY3JpcHRzKGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBnZXRTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcywgZmlsZXMpO1xuICAgIH1cbiAgICBnZXRQb2x5ZmlsbFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQb2x5ZmlsbFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgaGFuZGxlRG9jdW1lbnRTY3JpcHRMb2FkZXJJdGVtcyhjaGlsZHJlbikge1xuICAgICAgICBjb25zdCB7IHNjcmlwdExvYWRlciAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0TG9hZGVySXRlbXMgPSBbXTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IFtdO1xuICAgICAgICBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gX3NjcmlwdC5kZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLnByb3BzLnN0cmF0ZWd5ID09PSAnYmVmb3JlSW50ZXJhY3RpdmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlci5iZWZvcmVJbnRlcmFjdGl2ZSA9IChzY3JpcHRMb2FkZXIuYmVmb3JlSW50ZXJhY3RpdmUgfHwgW10pLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW1xuICAgICAgICAgICAgICAgICAgICAnbGF6eU9ubG9hZCcsXG4gICAgICAgICAgICAgICAgICAgICdhZnRlckludGVyYWN0aXZlJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoY2hpbGQucHJvcHMuc3RyYXRlZ3kpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlckl0ZW1zLnB1c2goY2hpbGQucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5fX05FWFRfREFUQV9fLnNjcmlwdExvYWRlciA9IHNjcmlwdExvYWRlckl0ZW1zO1xuICAgICAgICByZXR1cm4gZmlsdGVyZWRDaGlsZHJlbjtcbiAgICB9XG4gICAgbWFrZVN0eWxlc2hlZXRJbmVydChub2RlKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5tYXAobm9kZSwgKGMpPT57XG4gICAgICAgICAgICBpZiAoYy50eXBlID09PSAnbGluaycgJiYgYy5wcm9wc1snaHJlZiddICYmIF9jb25zdGFudHMuT1BUSU1JWkVEX0ZPTlRfUFJPVklERVJTLnNvbWUoKHsgdXJsICB9KT0+Yy5wcm9wc1snaHJlZiddLnN0YXJ0c1dpdGgodXJsKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb3BzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnByb3BzIHx8IHtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgbmV3UHJvcHNbJ2RhdGEtaHJlZiddID0gbmV3UHJvcHNbJ2hyZWYnXTtcbiAgICAgICAgICAgICAgICBuZXdQcm9wc1snaHJlZiddID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudChjLCBuZXdQcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjLnByb3BzICYmIGMucHJvcHNbJ2NoaWxkcmVuJ10pIHtcbiAgICAgICAgICAgICAgICBjLnByb3BzWydjaGlsZHJlbiddID0gdGhpcy5tYWtlU3R5bGVzaGVldEluZXJ0KGMucHJvcHNbJ2NoaWxkcmVuJ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgc3R5bGVzICwgYW1wUGF0aCAsIGluQW1wTW9kZSAsIGh5YnJpZEFtcCAsIGNhbm9uaWNhbEJhc2UgLCBfX05FWFRfREFUQV9fICwgZGFuZ2Vyb3VzQXNQYXRoICwgaGVhZFRhZ3MgLCB1bnN0YWJsZV9ydW50aW1lSlMgLCB1bnN0YWJsZV9Kc1ByZWxvYWQgLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAsIHVzZU1heWJlRGVmZXJDb250ZW50ICwgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGRpc2FibGVSdW50aW1lSlMgPSB1bnN0YWJsZV9ydW50aW1lSlMgPT09IGZhbHNlO1xuICAgICAgICBjb25zdCBkaXNhYmxlSnNQcmVsb2FkID0gdW5zdGFibGVfSnNQcmVsb2FkID09PSBmYWxzZSB8fCAhZGlzYWJsZU9wdGltaXplZExvYWRpbmc7XG4gICAgICAgIHRoaXMuY29udGV4dC5kb2NDb21wb25lbnRzUmVuZGVyZWQuSGVhZCA9IHRydWU7XG4gICAgICAgIGxldCB7IGhlYWQgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBjc3NQcmVsb2FkcyA9IFtdO1xuICAgICAgICBsZXQgb3RoZXJIZWFkRWxlbWVudHMgPSBbXTtcbiAgICAgICAgaWYgKGhlYWQpIHtcbiAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoYyk9PntcbiAgICAgICAgICAgICAgICBpZiAoYyAmJiBjLnR5cGUgPT09ICdsaW5rJyAmJiBjLnByb3BzWydyZWwnXSA9PT0gJ3ByZWxvYWQnICYmIGMucHJvcHNbJ2FzJ10gPT09ICdzdHlsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzUHJlbG9hZHMucHVzaChjKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjICYmIG90aGVySGVhZEVsZW1lbnRzLnB1c2goYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBoZWFkID0gY3NzUHJlbG9hZHMuY29uY2F0KG90aGVySGVhZEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2hpbGRyZW4gPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgLy8gc2hvdyBhIHdhcm5pbmcgaWYgSGVhZCBjb250YWlucyA8dGl0bGU+IChvbmx5IGluIGRldmVsb3BtZW50KVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9PntcbiAgICAgICAgICAgICAgICB2YXIgcmVmO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmVhY3RIZWxtZXQgPSBjaGlsZCA9PT0gbnVsbCB8fCBjaGlsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKHJlZiA9IGNoaWxkLnByb3BzKSA9PT0gbnVsbCB8fCByZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZlsnZGF0YS1yZWFjdC1oZWxtZXQnXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUmVhY3RIZWxtZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZjY7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoY2hpbGQgPT09IG51bGwgfHwgY2hpbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoaWxkLnR5cGUpID09PSAndGl0bGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiA8dGl0bGU+IHNob3VsZCBub3QgYmUgdXNlZCBpbiBfZG9jdW1lbnQuanMncyA8SGVhZD4uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25vLWRvY3VtZW50LXRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChjaGlsZCA9PT0gbnVsbCB8fCBjaGlsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hpbGQudHlwZSkgPT09ICdtZXRhJyAmJiAoY2hpbGQgPT09IG51bGwgfHwgY2hpbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChyZWY2ID0gY2hpbGQucHJvcHMpID09PSBudWxsIHx8IHJlZjYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZjYubmFtZSkgPT09ICd2aWV3cG9ydCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IHZpZXdwb3J0IG1ldGEgdGFncyBzaG91bGQgbm90IGJlIHVzZWQgaW4gX2RvY3VtZW50LmpzJ3MgPEhlYWQ+LiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uby1kb2N1bWVudC12aWV3cG9ydC1tZXRhXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4pIGNvbnNvbGUud2FybignV2FybmluZzogYEhlYWRgIGF0dHJpYnV0ZSBgY3Jvc3NPcmlnaW5gIGlzIGRlcHJlY2F0ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2RvYy1jcm9zc29yaWdpbi1kZXByZWNhdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnICYmIHByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9GT05UUyAmJiAhaW5BbXBNb2RlKSB7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMubWFrZVN0eWxlc2hlZXRJbmVydChjaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRyZW4gPSB0aGlzLmhhbmRsZURvY3VtZW50U2NyaXB0TG9hZGVySXRlbXMoY2hpbGRyZW4pO1xuICAgICAgICBsZXQgaGFzQW1waHRtbFJlbCA9IGZhbHNlO1xuICAgICAgICBsZXQgaGFzQ2Fub25pY2FsUmVsID0gZmFsc2U7XG4gICAgICAgIC8vIHNob3cgd2FybmluZyBhbmQgcmVtb3ZlIGNvbmZsaWN0aW5nIGFtcCBoZWFkIHRhZ3NcbiAgICAgICAgaGVhZCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm1hcChoZWFkIHx8IFtdLCAoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoIWNoaWxkKSByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUgLCBwcm9wcyAgfSA9IGNoaWxkO1xuICAgICAgICAgICAgaWYgKGluQW1wTW9kZSkge1xuICAgICAgICAgICAgICAgIGxldCBiYWRQcm9wID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtZXRhJyAmJiBwcm9wcy5uYW1lID09PSAndmlld3BvcnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhZFByb3AgPSAnbmFtZT1cInZpZXdwb3J0XCInO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpbmsnICYmIHByb3BzLnJlbCA9PT0gJ2Nhbm9uaWNhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzQ2Fub25pY2FsUmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzY3JpcHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgYmxvY2sgaWZcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gaXQgaGFzIGEgc3JjIGFuZCBpc24ndCBwb2ludGluZyB0byBhbXBwcm9qZWN0J3MgQ0ROXG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIGl0IGlzIHVzaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIHdpdGhvdXQgYSB0eXBlIG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgdHlwZSBvZiB0ZXh0L2phdmFzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnNyYyAmJiBwcm9wcy5zcmMuaW5kZXhPZignYW1wcHJvamVjdCcpIDwgLTEgfHwgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgKCFwcm9wcy50eXBlIHx8IHByb3BzLnR5cGUgPT09ICd0ZXh0L2phdmFzY3JpcHQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFkUHJvcCA9ICc8c2NyaXB0JztcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKChwcm9wKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFByb3AgKz0gYCAke3Byb3B9PVwiJHtwcm9wc1twcm9wXX1cImA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhZFByb3AgKz0gJy8+JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYmFkUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEZvdW5kIGNvbmZsaWN0aW5nIGFtcCB0YWcgXCIke2NoaWxkLnR5cGV9XCIgd2l0aCBjb25mbGljdGluZyBwcm9wICR7YmFkUHJvcH0gaW4gJHtfX05FWFRfREFUQV9fLnBhZ2V9LiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jb25mbGljdGluZy1hbXAtdGFnYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gbm9uLWFtcCBtb2RlXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdsaW5rJyAmJiBwcm9wcy5yZWwgPT09ICdhbXBodG1sJykge1xuICAgICAgICAgICAgICAgICAgICBoYXNBbXBodG1sUmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGdldERvY3VtZW50RmlsZXModGhpcy5jb250ZXh0LmJ1aWxkTWFuaWZlc3QsIHRoaXMuY29udGV4dC5fX05FWFRfREFUQV9fLnBhZ2UsIGluQW1wTW9kZSk7XG4gICAgICAgIC8vIE11c3QgdXNlIG5lc3RlZCBjb21wb25lbnQgdG8gYWxsb3cgdXNlIG9mIGEgY3VzdG9tIGhvb2tcbiAgICAgICAgY29uc3QgRGVmZXJyYWJsZUhlYWQgPSAoKT0+e1xuICAgICAgICAgICAgY29uc3QgZ2V0RHluYW1pY0hlYWRDb250ZW50ID0gKCk9PntcbiAgICAgICAgICAgICAgICByZXR1cm4oLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCBoZWFkLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJuZXh0LWhlYWQtY291bnRcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4uY291bnQoaGVhZCB8fCBbXSkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgZ2V0RHluYW1pY1NjcmlwdFByZWxvYWRzID0gKCk9PntcbiAgICAgICAgICAgICAgICByZXR1cm4oLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAhZGlzYWJsZVJ1bnRpbWVKUyAmJiAhZGlzYWJsZUpzUHJlbG9hZCAmJiB0aGlzLmdldFByZWxvYWREeW5hbWljQ2h1bmtzKCksICFkaXNhYmxlUnVudGltZUpTICYmICFkaXNhYmxlSnNQcmVsb2FkICYmIHRoaXMuZ2V0UHJlbG9hZE1haW5MaW5rcyhmaWxlcykpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBnZXREeW5hbWljU2NyaXB0Q29udGVudCA9ICgpPT57XG4gICAgICAgICAgICAgICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UHJlTmV4dFNjcmlwdHMoKSwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0RHluYW1pY0NodW5rcyhmaWxlcyksICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAmJiAhZGlzYWJsZVJ1bnRpbWVKUyAmJiB0aGlzLmdldFNjcmlwdHMoZmlsZXMpKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgW2lzRGVmZXJyZWRdID0gdXNlTWF5YmVEZWZlckNvbnRlbnQoJ0hFQUQnLCAoKT0+e1xuICAgICAgICAgICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIGdldER5bmFtaWNIZWFkQ29udGVudCgpLCBnZXREeW5hbWljU2NyaXB0UHJlbG9hZHMoKSwgZ2V0RHluYW1pY1NjcmlwdENvbnRlbnQoKSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgX25vbmNlLCBfbm9uY2UxO1xuICAgICAgICAgICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImhlYWRcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICB9LCB0aGlzLnByb3BzKSwgdGhpcy5jb250ZXh0LmlzRGV2ZWxvcG1lbnQgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgICAgICAgICAgXCJkYXRhLW5leHQtaGlkZS1mb3VjXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJkYXRhLWFtcGRldm1vZGVcIjogaW5BbXBNb2RlID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7ZGlzcGxheTpub25lfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgIFwiZGF0YS1uZXh0LWhpZGUtZm91Y1wiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1hbXBkZXZtb2RlXCI6IGluQW1wTW9kZSA/ICd0cnVlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7ZGlzcGxheTpibG9ja31gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpKSwgY2hpbGRyZW4sIHByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9GT05UUyAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcIm5leHQtZm9udC1wcmVjb25uZWN0XCJcbiAgICAgICAgICAgIH0pLCAhaXNEZWZlcnJlZCAmJiBnZXREeW5hbWljSGVhZENvbnRlbnQoKSwgaW5BbXBNb2RlICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibWV0YVwiLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ2aWV3cG9ydFwiLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwid2lkdGg9ZGV2aWNlLXdpZHRoLG1pbmltdW0tc2NhbGU9MSxpbml0aWFsLXNjYWxlPTFcIlxuICAgICAgICAgICAgfSksICFoYXNDYW5vbmljYWxSZWwgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImNhbm9uaWNhbFwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGNhbm9uaWNhbEJhc2UgKyAoMCwgX3V0aWxzMSkuY2xlYW5BbXBQYXRoKGRhbmdlcm91c0FzUGF0aClcbiAgICAgICAgICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgIGFzOiBcInNjcmlwdFwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvdjAuanNcIlxuICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChBbXBTdHlsZXMsIHtcbiAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlc1xuICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgICAgICAgICBcImFtcC1ib2lsZXJwbGF0ZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7LXdlYmtpdC1hbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aDstbW96LWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoOy1tcy1hbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aDthbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aH1ALXdlYmtpdC1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1tb3ota2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUAtbXMta2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUAtby1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QGtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm5vc2NyaXB0XCIsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgICAgICAgICBcImFtcC1ib2lsZXJwbGF0ZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7LXdlYmtpdC1hbmltYXRpb246bm9uZTstbW96LWFuaW1hdGlvbjpub25lOy1tcy1hbmltYXRpb246bm9uZTthbmltYXRpb246bm9uZX1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNyYzogXCJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy92MC5qc1wiXG4gICAgICAgICAgICB9KSksICFpbkFtcE1vZGUgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAhaGFzQW1waHRtbFJlbCAmJiBoeWJyaWRBbXAgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcImFtcGh0bWxcIixcbiAgICAgICAgICAgICAgICBocmVmOiBjYW5vbmljYWxCYXNlICsgZ2V0QW1wUGF0aChhbXBQYXRoLCBkYW5nZXJvdXNBc1BhdGgpXG4gICAgICAgICAgICB9KSwgIXByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9DU1MgJiYgdGhpcy5nZXRDc3NMaW5rcyhmaWxlcyksICFwcm9jZXNzLmVudi5fX05FWFRfT1BUSU1JWkVfQ1NTICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm5vc2NyaXB0XCIsIHtcbiAgICAgICAgICAgICAgICBcImRhdGEtbi1jc3NcIjogKF9ub25jZSA9IHRoaXMucHJvcHMubm9uY2UpICE9PSBudWxsICYmIF9ub25jZSAhPT0gdm9pZCAwID8gX25vbmNlIDogJydcbiAgICAgICAgICAgIH0pLCBwcm9jZXNzLmVudi5fX05FWFRfT1BUSU1JWkVfSU1BR0VTICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwibmV4dC1pbWFnZS1wcmVsb2FkXCJcbiAgICAgICAgICAgIH0pLCAhaXNEZWZlcnJlZCAmJiBnZXREeW5hbWljU2NyaXB0UHJlbG9hZHMoKSwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UG9seWZpbGxTY3JpcHRzKCksICFpc0RlZmVycmVkICYmIGdldER5bmFtaWNTY3JpcHRDb250ZW50KCksIHByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9DU1MgJiYgdGhpcy5nZXRDc3NMaW5rcyhmaWxlcyksIHByb2Nlc3MuZW52Ll9fTkVYVF9PUFRJTUlaRV9DU1MgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgIFwiZGF0YS1uLWNzc1wiOiAoX25vbmNlMSA9IHRoaXMucHJvcHMubm9uY2UpICE9PSBudWxsICYmIF9ub25jZTEgIT09IHZvaWQgMCA/IF9ub25jZTEgOiAnJ1xuICAgICAgICAgICAgfSksIHRoaXMuY29udGV4dC5pc0RldmVsb3BtZW50ICYmIC8vIHRoaXMgZWxlbWVudCBpcyB1c2VkIHRvIG1vdW50IGRldmVsb3BtZW50IHN0eWxlcyBzbyB0aGVcbiAgICAgICAgICAgIC8vIG9yZGVyaW5nIG1hdGNoZXMgcHJvZHVjdGlvblxuICAgICAgICAgICAgLy8gKGJ5IGRlZmF1bHQsIHN0eWxlLWxvYWRlciBpbmplY3RzIGF0IHRoZSBib3R0b20gb2YgPGhlYWQgLz4pXG4gICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJub3NjcmlwdFwiLCB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiX19uZXh0X2Nzc19fRE9fTk9UX1VTRV9fXCJcbiAgICAgICAgICAgIH0pLCBzdHlsZXMgfHwgbnVsbCksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwge1xuICAgICAgICAgICAgfSwgLi4uaGVhZFRhZ3MgfHwgW10pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoRGVmZXJyYWJsZUhlYWQsIG51bGwpKTtcbiAgICB9XG59XG5leHBvcnRzLkhlYWQgPSBIZWFkO1xuSGVhZC5jb250ZXh0VHlwZSA9IF91dGlscy5IdG1sQ29udGV4dDtcbmZ1bmN0aW9uIE1haW4oKSB7XG4gICAgY29uc3QgeyBpbkFtcE1vZGUgLCBkb2NDb21wb25lbnRzUmVuZGVyZWQgIH0gPSAoMCwgX3JlYWN0KS51c2VDb250ZXh0KF91dGlscy5IdG1sQ29udGV4dCk7XG4gICAgZG9jQ29tcG9uZW50c1JlbmRlcmVkLk1haW4gPSB0cnVlO1xuICAgIGlmIChpbkFtcE1vZGUpIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIF9jb25zdGFudHMuQk9EWV9SRU5ERVJfVEFSR0VUKSk7XG4gICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIGlkOiBcIl9fbmV4dFwiXG4gICAgfSwgX2NvbnN0YW50cy5CT0RZX1JFTkRFUl9UQVJHRVQpKTtcbn1cbmNsYXNzIE5leHRTY3JpcHQgZXh0ZW5kcyBfcmVhY3QuQ29tcG9uZW50IHtcbiAgICBnZXREeW5hbWljQ2h1bmtzKGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBnZXREeW5hbWljQ2h1bmtzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcywgZmlsZXMpO1xuICAgIH1cbiAgICBnZXRQcmVOZXh0U2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIGdldFByZU5leHRTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcyk7XG4gICAgfVxuICAgIGdldFNjcmlwdHMoZmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzLCBmaWxlcyk7XG4gICAgfVxuICAgIGdldFBvbHlmaWxsU2NyaXB0cygpIHtcbiAgICAgICAgcmV0dXJuIGdldFBvbHlmaWxsU2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0SW5saW5lU2NyaXB0U291cmNlKGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBfX05FWFRfREFUQV9fICB9ID0gY29udGV4dDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnN0cmluZ2lmeShfX05FWFRfREFUQV9fKTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oZGF0YSkuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV0dHlCeXRlcyA9IHJlcXVpcmUoJy4uL2xpYi9wcmV0dHktYnl0ZXMnKS5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIGlmIChieXRlcyA+IDEyOCAqIDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBkYXRhIGZvciBwYWdlIFwiJHtfX05FWFRfREFUQV9fLnBhZ2V9XCIgaXMgJHtwcmV0dHlCeXRlcyhieXRlcyl9LCB0aGlzIGFtb3VudCBvZiBkYXRhIGNhbiByZWR1Y2UgcGVyZm9ybWFuY2UuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9sYXJnZS1wYWdlLWRhdGFgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9odG1sZXNjYXBlKS5odG1sRXNjYXBlSnNvblN0cmluZyhkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycikgJiYgZXJyLm1lc3NhZ2UuaW5kZXhPZignY2lyY3VsYXIgc3RydWN0dXJlJykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIHN0cnVjdHVyZSBpbiBcImdldEluaXRpYWxQcm9wc1wiIHJlc3VsdCBvZiBwYWdlIFwiJHtfX05FWFRfREFUQV9fLnBhZ2V9XCIuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2NpcmN1bGFyLXN0cnVjdHVyZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGluQW1wTW9kZSAsIGJ1aWxkTWFuaWZlc3QgLCB1bnN0YWJsZV9ydW50aW1lSlMgLCBkb2NDb21wb25lbnRzUmVuZGVyZWQgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgdXNlTWF5YmVEZWZlckNvbnRlbnQgLCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgZGlzYWJsZVJ1bnRpbWVKUyA9IHVuc3RhYmxlX3J1bnRpbWVKUyA9PT0gZmFsc2U7XG4gICAgICAgIGRvY0NvbXBvbmVudHNSZW5kZXJlZC5OZXh0U2NyaXB0ID0gdHJ1ZTtcbiAgICAgICAgLy8gTXVzdCBuZXN0IGNvbXBvbmVudCB0byB1c2UgY3VzdG9tIGhvb2tcbiAgICAgICAgY29uc3QgRGVmZXJyYWJsZU5leHRTY3JpcHQgPSAoKT0+e1xuICAgICAgICAgICAgY29uc3QgWywgY29udGVudF0gPSB1c2VNYXliZURlZmVyQ29udGVudCgnTkVYVF9TQ1JJUFQnLCAoKT0+e1xuICAgICAgICAgICAgICAgIGlmIChpbkFtcE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1wRGV2RmlsZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5idWlsZE1hbmlmZXN0LmRldkZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnVpbGRNYW5pZmVzdC5wb2x5ZmlsbEZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnVpbGRNYW5pZmVzdC5hbXBEZXZGaWxlcywgXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsIGRpc2FibGVSdW50aW1lSlMgPyBudWxsIDogLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIl9fTkVYVF9EQVRBX19cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMucHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IE5leHRTY3JpcHQuZ2V0SW5saW5lU2NyaXB0U291cmNlKHRoaXMuY29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtYW1wZGV2bW9kZVwiOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pLCBhbXBEZXZGaWxlcy5tYXAoKGZpbGUpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2ZpbGV9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWFtcGRldm1vZGVcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5jcm9zc09yaWdpbikgY29uc29sZS53YXJuKCdXYXJuaW5nOiBgTmV4dFNjcmlwdGAgYXR0cmlidXRlIGBjcm9zc09yaWdpbmAgaXMgZGVwcmVjYXRlZC4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZG9jLWNyb3Nzb3JpZ2luLWRlcHJlY2F0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnZXREb2N1bWVudEZpbGVzKHRoaXMuY29udGV4dC5idWlsZE1hbmlmZXN0LCB0aGlzLmNvbnRleHQuX19ORVhUX0RBVEFfXy5wYWdlLCBpbkFtcE1vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybigvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsICFkaXNhYmxlUnVudGltZUpTICYmIGJ1aWxkTWFuaWZlc3QuZGV2RmlsZXMgPyBidWlsZE1hbmlmZXN0LmRldkZpbGVzLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApIDogbnVsbCwgZGlzYWJsZVJ1bnRpbWVKUyA/IG51bGwgOiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJfX05FWFRfREFUQV9fXCIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTixcbiAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDogTmV4dFNjcmlwdC5nZXRJbmxpbmVTY3JpcHRTb3VyY2UodGhpcy5jb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UG9seWZpbGxTY3JpcHRzKCksIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UHJlTmV4dFNjcmlwdHMoKSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXREeW5hbWljQ2h1bmtzKGZpbGVzKSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRTY3JpcHRzKGZpbGVzKSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5BbXBNb2RlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4oLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KERlZmVycmFibGVOZXh0U2NyaXB0LCBudWxsKSk7XG4gICAgfVxufVxuZXhwb3J0cy5OZXh0U2NyaXB0ID0gTmV4dFNjcmlwdDtcbk5leHRTY3JpcHQuY29udGV4dFR5cGUgPSBfdXRpbHMuSHRtbENvbnRleHQ7XG5OZXh0U2NyaXB0LnNhZmFyaU5vbW9kdWxlRml4ID0gJyFmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LHQ9ZS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2lmKCEoXCJub01vZHVsZVwiaW4gdCkmJlwib25iZWZvcmVsb2FkXCJpbiB0KXt2YXIgbj0hMTtlLmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmVsb2FkXCIsZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT10KW49ITA7ZWxzZSBpZighZS50YXJnZXQuaGFzQXR0cmlidXRlKFwibm9tb2R1bGVcIil8fCFuKXJldHVybjtlLnByZXZlbnREZWZhdWx0KCl9LCEwKSx0LnR5cGU9XCJtb2R1bGVcIix0LnNyYz1cIi5cIixlLmhlYWQuYXBwZW5kQ2hpbGQodCksdC5yZW1vdmUoKX19KCk7JztcbmZ1bmN0aW9uIGdldEFtcFBhdGgoYW1wUGF0aCwgYXNQYXRoKSB7XG4gICAgcmV0dXJuIGFtcFBhdGggfHwgYCR7YXNQYXRofSR7YXNQYXRoLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyd9YW1wPTFgO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1fZG9jdW1lbnQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsIkRvY3VtZW50Q29udGV4dCIsIkRvY3VtZW50SW5pdGlhbFByb3BzIiwiRG9jdW1lbnRQcm9wcyIsIkh0bWwiLCJNYWluIiwiZGVmYXVsdCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfZ2V0UGFnZUZpbGVzIiwiX3V0aWxzMSIsIl9odG1sZXNjYXBlIiwiX3NjcmlwdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaXNFcnJvciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJuZXdPYmoiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwic2V0IiwiZ2V0RG9jdW1lbnRGaWxlcyIsImJ1aWxkTWFuaWZlc3QiLCJwYXRobmFtZSIsImluQW1wTW9kZSIsInNoYXJlZEZpbGVzIiwiZ2V0UGFnZUZpbGVzIiwicGFnZUZpbGVzIiwiYWxsRmlsZXMiLCJTZXQiLCJnZXRQb2x5ZmlsbFNjcmlwdHMiLCJjb250ZXh0IiwicHJvcHMiLCJhc3NldFByZWZpeCIsImRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nIiwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciLCJwb2x5ZmlsbEZpbGVzIiwiZmlsdGVyIiwicG9seWZpbGwiLCJlbmRzV2l0aCIsIm1hcCIsImNyZWF0ZUVsZW1lbnQiLCJkZWZlciIsIm5vbmNlIiwiY3Jvc3NPcmlnaW4iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NST1NTX09SSUdJTiIsIm5vTW9kdWxlIiwic3JjIiwiZ2V0UHJlTmV4dFNjcmlwdHMiLCJzY3JpcHRMb2FkZXIiLCJiZWZvcmVJbnRlcmFjdGl2ZSIsImZpbGUiLCJpbmRleCIsInN0cmF0ZWd5Iiwic2NyaXB0UHJvcHMiLCJhc3NpZ24iLCJnZXREeW5hbWljQ2h1bmtzIiwiZmlsZXMiLCJkeW5hbWljSW1wb3J0cyIsImlzRGV2ZWxvcG1lbnQiLCJpbmNsdWRlcyIsImFzeW5jIiwiZW5jb2RlVVJJIiwiZ2V0U2NyaXB0cyIsInJlZiIsIm5vcm1hbFNjcmlwdHMiLCJsb3dQcmlvcml0eVNjcmlwdHMiLCJsb3dQcmlvcml0eUZpbGVzIiwiRG9jdW1lbnQiLCJDb21wb25lbnQiLCJnZXRJbml0aWFsUHJvcHMiLCJjdHgiLCJkZWZhdWx0R2V0SW5pdGlhbFByb3BzIiwicmVuZGVyIiwiSGVhZCIsIk5leHRTY3JpcHQiLCJkb2NDb21wb25lbnRzUmVuZGVyZWQiLCJsb2NhbGUiLCJ1c2VDb250ZXh0IiwiSHRtbENvbnRleHQiLCJsYW5nIiwidW5kZWZpbmVkIiwiYW1wIiwiTk9ERV9FTlYiLCJBbXBTdHlsZXMiLCJzdHlsZXMiLCJjdXJTdHlsZXMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZHJlbiIsImhhc1N0eWxlcyIsImVsIiwicmVmMSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZm9yRWFjaCIsImNoaWxkIiwicHVzaCIsInN0eWxlIiwiam9pbiIsInJlcGxhY2UiLCJnZXRDc3NMaW5rcyIsImNzc0ZpbGVzIiwiZiIsInVubWFuZ2VkRmlsZXMiLCJkeW5hbWljQ3NzRmlsZXMiLCJmcm9tIiwibGVuZ3RoIiwiZXhpc3RpbmciLCJoYXMiLCJjc3NMaW5rRWxlbWVudHMiLCJpc1NoYXJlZEZpbGUiLCJfX05FWFRfT1BUSU1JWkVfQ1NTIiwicmVsIiwiaHJlZiIsImFzIiwiaXNVbm1hbmFnZWRGaWxlIiwiX19ORVhUX09QVElNSVpFX0ZPTlRTIiwibWFrZVN0eWxlc2hlZXRJbmVydCIsImdldFByZWxvYWREeW5hbWljQ2h1bmtzIiwiQm9vbGVhbiIsImdldFByZWxvYWRNYWluTGlua3MiLCJwcmVsb2FkRmlsZXMiLCJoYW5kbGVEb2N1bWVudFNjcmlwdExvYWRlckl0ZW1zIiwic2NyaXB0TG9hZGVySXRlbXMiLCJmaWx0ZXJlZENoaWxkcmVuIiwiQ2hpbGRyZW4iLCJ0eXBlIiwiY29uY2F0IiwiX19ORVhUX0RBVEFfXyIsIm5vZGUiLCJjIiwiT1BUSU1JWkVEX0ZPTlRfUFJPVklERVJTIiwic29tZSIsInVybCIsInN0YXJ0c1dpdGgiLCJuZXdQcm9wcyIsImNsb25lRWxlbWVudCIsImFtcFBhdGgiLCJoeWJyaWRBbXAiLCJjYW5vbmljYWxCYXNlIiwiZGFuZ2Vyb3VzQXNQYXRoIiwiaGVhZFRhZ3MiLCJ1bnN0YWJsZV9ydW50aW1lSlMiLCJ1bnN0YWJsZV9Kc1ByZWxvYWQiLCJ1c2VNYXliZURlZmVyQ29udGVudCIsImRpc2FibGVSdW50aW1lSlMiLCJkaXNhYmxlSnNQcmVsb2FkIiwiaGVhZCIsImNzc1ByZWxvYWRzIiwib3RoZXJIZWFkRWxlbWVudHMiLCJ0b0FycmF5IiwiaXNSZWFjdEhlbG1ldCIsInJlZjYiLCJjb25zb2xlIiwid2FybiIsIm5hbWUiLCJoYXNBbXBodG1sUmVsIiwiaGFzQ2Fub25pY2FsUmVsIiwiYmFkUHJvcCIsImluZGV4T2YiLCJrZXlzIiwicHJvcCIsInBhZ2UiLCJEZWZlcnJhYmxlSGVhZCIsImdldER5bmFtaWNIZWFkQ29udGVudCIsIkZyYWdtZW50IiwiY29udGVudCIsImNvdW50IiwidG9TdHJpbmciLCJnZXREeW5hbWljU2NyaXB0UHJlbG9hZHMiLCJnZXREeW5hbWljU2NyaXB0Q29udGVudCIsImlzRGVmZXJyZWQiLCJfbm9uY2UiLCJfbm9uY2UxIiwiY2xlYW5BbXBQYXRoIiwiZ2V0QW1wUGF0aCIsIl9fTkVYVF9PUFRJTUlaRV9JTUFHRVMiLCJpZCIsImNvbnRleHRUeXBlIiwiQk9EWV9SRU5ERVJfVEFSR0VUIiwiZ2V0SW5saW5lU2NyaXB0U291cmNlIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJieXRlcyIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJwcmV0dHlCeXRlcyIsImh0bWxFc2NhcGVKc29uU3RyaW5nIiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiRGVmZXJyYWJsZU5leHRTY3JpcHQiLCJhbXBEZXZGaWxlcyIsImRldkZpbGVzIiwic2FmYXJpTm9tb2R1bGVGaXgiLCJhc1BhdGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../../node_modules/next/dist/pages/_document.js\n");
|
|
53
|
+
|
|
54
|
+
/***/ }),
|
|
55
|
+
|
|
56
|
+
/***/ "../../../../node_modules/next/dist/lib/is-error.js":
|
|
57
|
+
/*!**********************************************************!*\
|
|
58
|
+
!*** ../../../../node_modules/next/dist/lib/is-error.js ***!
|
|
59
|
+
\**********************************************************/
|
|
60
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
61
|
+
|
|
62
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = isError;\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvaXMtZXJyb3IuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixrQkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcz8wMWVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNFcnJvcjtcbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyciAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZXJyICYmICdtZXNzYWdlJyBpbiBlcnI7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVycm9yLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../../node_modules/next/dist/lib/is-error.js\n");
|
|
63
|
+
|
|
64
|
+
/***/ }),
|
|
65
|
+
|
|
66
|
+
/***/ "../../../../node_modules/next/dist/lib/pretty-bytes.js":
|
|
67
|
+
/*!**************************************************************!*\
|
|
68
|
+
!*** ../../../../node_modules/next/dist/lib/pretty-bytes.js ***!
|
|
69
|
+
\**************************************************************/
|
|
70
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
71
|
+
|
|
72
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = prettyBytes;\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};\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({\n }, 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\n//# sourceMappingURL=pretty-bytes.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvcHJldHR5LWJ5dGVzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0JBQWU7QUFDZjtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYyxJQUFJLE9BQU87QUFDdEY7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvcHJldHR5LWJ5dGVzLmpzP2Y2MDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBwcmV0dHlCeXRlcztcbi8qXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIFNpbmRyZSBTb3JodXMgPHNpbmRyZXNvcmh1c0BnbWFpbC5jb20+IChzaW5kcmVzb3JodXMuY29tKVxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4qLyBjb25zdCBVTklUUyA9IFtcbiAgICAnQicsXG4gICAgJ2tCJyxcbiAgICAnTUInLFxuICAgICdHQicsXG4gICAgJ1RCJyxcbiAgICAnUEInLFxuICAgICdFQicsXG4gICAgJ1pCJyxcbiAgICAnWUInXG5dO1xuLypcbkZvcm1hdHMgdGhlIGdpdmVuIG51bWJlciB1c2luZyBgTnVtYmVyI3RvTG9jYWxlU3RyaW5nYC5cbi0gSWYgbG9jYWxlIGlzIGEgc3RyaW5nLCB0aGUgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgYSBsb2NhbGUta2V5IChmb3IgZXhhbXBsZTogYGRlYCkuXG4tIElmIGxvY2FsZSBpcyB0cnVlLCB0aGUgc3lzdGVtIGRlZmF1bHQgbG9jYWxlIGlzIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuLSBJZiBubyB2YWx1ZSBmb3IgbG9jYWxlIGlzIHNwZWNpZmllZCwgdGhlIG51bWJlciBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLlxuKi8gY29uc3QgdG9Mb2NhbGVTdHJpbmcgPSAobnVtYmVyLCBsb2NhbGUpPT57XG4gICAgbGV0IHJlc3VsdCA9IG51bWJlcjtcbiAgICBpZiAodHlwZW9mIGxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVzdWx0ID0gbnVtYmVyLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSk7XG4gICAgfSBlbHNlIGlmIChsb2NhbGUgPT09IHRydWUpIHtcbiAgICAgICAgcmVzdWx0ID0gbnVtYmVyLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZnVuY3Rpb24gcHJldHR5Qnl0ZXMobnVtYmVyLCBvcHRpb25zKSB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGZpbml0ZSBudW1iZXIsIGdvdCAke3R5cGVvZiBudW1iZXJ9OiAke251bWJlcn1gKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zLnNpZ25lZCAmJiBudW1iZXIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuICcgMCBCJztcbiAgICB9XG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IG51bWJlciA8IDA7XG4gICAgY29uc3QgcHJlZml4ID0gaXNOZWdhdGl2ZSA/ICctJyA6IG9wdGlvbnMuc2lnbmVkID8gJysnIDogJyc7XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDEpIHtcbiAgICAgICAgY29uc3QgbnVtYmVyU3RyaW5nID0gdG9Mb2NhbGVTdHJpbmcobnVtYmVyLCBvcHRpb25zLmxvY2FsZSk7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyBudW1iZXJTdHJpbmcgKyAnIEInO1xuICAgIH1cbiAgICBjb25zdCBleHBvbmVudCA9IE1hdGgubWluKE1hdGguZmxvb3IoTWF0aC5sb2cxMChudW1iZXIpIC8gMyksIFVOSVRTLmxlbmd0aCAtIDEpO1xuICAgIG51bWJlciA9IE51bWJlcigobnVtYmVyIC8gTWF0aC5wb3coMTAwMCwgZXhwb25lbnQpKS50b1ByZWNpc2lvbigzKSk7XG4gICAgY29uc3QgbnVtYmVyU3RyaW5nID0gdG9Mb2NhbGVTdHJpbmcobnVtYmVyLCBvcHRpb25zLmxvY2FsZSk7XG4gICAgY29uc3QgdW5pdCA9IFVOSVRTW2V4cG9uZW50XTtcbiAgICByZXR1cm4gcHJlZml4ICsgbnVtYmVyU3RyaW5nICsgJyAnICsgdW5pdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJldHR5LWJ5dGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../../node_modules/next/dist/lib/pretty-bytes.js\n");
|
|
73
|
+
|
|
74
|
+
/***/ }),
|
|
75
|
+
|
|
76
|
+
/***/ "../server/get-page-files":
|
|
77
|
+
/*!*****************************************************!*\
|
|
78
|
+
!*** external "next/dist/server/get-page-files.js" ***!
|
|
79
|
+
\*****************************************************/
|
|
80
|
+
/***/ ((module) => {
|
|
81
|
+
|
|
82
|
+
module.exports = require("next/dist/server/get-page-files.js");
|
|
83
|
+
|
|
84
|
+
/***/ }),
|
|
85
|
+
|
|
86
|
+
/***/ "../server/htmlescape":
|
|
87
|
+
/*!*************************************************!*\
|
|
88
|
+
!*** external "next/dist/server/htmlescape.js" ***!
|
|
89
|
+
\*************************************************/
|
|
90
|
+
/***/ ((module) => {
|
|
91
|
+
|
|
92
|
+
module.exports = require("next/dist/server/htmlescape.js");
|
|
93
|
+
|
|
94
|
+
/***/ }),
|
|
95
|
+
|
|
96
|
+
/***/ "../server/utils":
|
|
97
|
+
/*!********************************************!*\
|
|
98
|
+
!*** external "next/dist/server/utils.js" ***!
|
|
99
|
+
\********************************************/
|
|
100
|
+
/***/ ((module) => {
|
|
101
|
+
|
|
102
|
+
module.exports = require("next/dist/server/utils.js");
|
|
103
|
+
|
|
104
|
+
/***/ }),
|
|
105
|
+
|
|
106
|
+
/***/ "../shared/lib/constants":
|
|
107
|
+
/*!****************************************************!*\
|
|
108
|
+
!*** external "next/dist/shared/lib/constants.js" ***!
|
|
109
|
+
\****************************************************/
|
|
110
|
+
/***/ ((module) => {
|
|
111
|
+
|
|
112
|
+
module.exports = require("next/dist/shared/lib/constants.js");
|
|
113
|
+
|
|
114
|
+
/***/ }),
|
|
115
|
+
|
|
116
|
+
/***/ "../shared/lib/head-manager-context":
|
|
117
|
+
/*!***************************************************************!*\
|
|
118
|
+
!*** external "next/dist/shared/lib/head-manager-context.js" ***!
|
|
119
|
+
\***************************************************************/
|
|
120
|
+
/***/ ((module) => {
|
|
121
|
+
|
|
122
|
+
module.exports = require("next/dist/shared/lib/head-manager-context.js");
|
|
123
|
+
|
|
124
|
+
/***/ }),
|
|
125
|
+
|
|
126
|
+
/***/ "../shared/lib/utils":
|
|
127
|
+
/*!************************************************!*\
|
|
128
|
+
!*** external "next/dist/shared/lib/utils.js" ***!
|
|
129
|
+
\************************************************/
|
|
130
|
+
/***/ ((module) => {
|
|
131
|
+
|
|
132
|
+
module.exports = require("next/dist/shared/lib/utils.js");
|
|
133
|
+
|
|
134
|
+
/***/ }),
|
|
135
|
+
|
|
136
|
+
/***/ "react":
|
|
137
|
+
/*!************************!*\
|
|
138
|
+
!*** external "react" ***!
|
|
139
|
+
\************************/
|
|
140
|
+
/***/ ((module) => {
|
|
141
|
+
|
|
142
|
+
module.exports = require("react");
|
|
143
|
+
|
|
144
|
+
/***/ })
|
|
145
|
+
|
|
146
|
+
};
|
|
147
|
+
;
|
|
148
|
+
|
|
149
|
+
// load runtime
|
|
150
|
+
var __webpack_require__ = require("../webpack-runtime.js");
|
|
151
|
+
__webpack_require__.C(exports);
|
|
152
|
+
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
|
153
|
+
var __webpack_exports__ = (__webpack_exec__("../../../../node_modules/next/dist/pages/_document.js"));
|
|
154
|
+
module.exports = __webpack_exports__;
|
|
155
|
+
|
|
156
|
+
})();
|