22 lines
142 KiB
JavaScript
22 lines
142 KiB
JavaScript
"use strict";
|
||
/*
|
||
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
self["webpackHotUpdate_N_E"]("main",{
|
||
|
||
/***/ "./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/router.js":
|
||
/*!***********************************************************************************************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/router.js ***!
|
||
\***********************************************************************************************************************************************************/
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
eval(__webpack_require__.ts("// tslint:disable:no-console\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n createKey: function() {\n return createKey;\n },\n default: function() {\n return Router;\n },\n matchesMiddleware: function() {\n return matchesMiddleware;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/.pnpm/@swc+helpers@0.5.5/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/.pnpm/@swc+helpers@0.5.5/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _removetrailingslash = __webpack_require__(/*! ./utils/remove-trailing-slash */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _routeloader = __webpack_require__(/*! ../../../client/route-loader */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/route-loader.js\");\nconst _script = __webpack_require__(/*! ../../../client/script */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/script.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../../../lib/is-error */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/lib/is-error.js\"));\nconst _denormalizepagepath = __webpack_require__(/*! ../page-path/denormalize-page-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js\");\nconst _normalizelocalepath = __webpack_require__(/*! ../i18n/normalize-locale-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js\");\nconst _mitt = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../mitt */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/mitt.js\"));\nconst _utils = __webpack_require__(/*! ../utils */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/utils.js\");\nconst _isdynamic = __webpack_require__(/*! ./utils/is-dynamic */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _parserelativeurl = __webpack_require__(/*! ./utils/parse-relative-url */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _resolverewrites = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./utils/resolve-rewrites */ \"?9549\"));\nconst _routematcher = __webpack_require__(/*! ./utils/route-matcher */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/route-matcher.js\");\nconst _routeregex = __webpack_require__(/*! ./utils/route-regex */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/route-regex.js\");\nconst _formaturl = __webpack_require__(/*! ./utils/format-url */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _detectdomainlocale = __webpack_require__(/*! ../../../client/detect-domain-locale */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/detect-domain-locale.js\");\nconst _parsepath = __webpack_require__(/*! ./utils/parse-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst _addlocale = __webpack_require__(/*! ../../../client/add-locale */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/add-locale.js\");\nconst _removelocale = __webpack_require__(/*! ../../../client/remove-locale */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/remove-locale.js\");\nconst _removebasepath = __webpack_require__(/*! ../../../client/remove-base-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/remove-base-path.js\");\nconst _addbasepath = __webpack_require__(/*! ../../../client/add-base-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/add-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../client/has-base-path */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/has-base-path.js\");\nconst _resolvehref = __webpack_require__(/*! ../../../client/resolve-href */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/client/resolve-href.js\");\nconst _isapiroute = __webpack_require__(/*! ../../../lib/is-api-route */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/lib/is-api-route.js\");\nconst _getnextpathnameinfo = __webpack_require__(/*! ./utils/get-next-pathname-info */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js\");\nconst _formatnextpathnameinfo = __webpack_require__(/*! ./utils/format-next-pathname-info */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js\");\nconst _comparestates = __webpack_require__(/*! ./utils/compare-states */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/compare-states.js\");\nconst _islocalurl = __webpack_require__(/*! ./utils/is-local-url */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _isbot = __webpack_require__(/*! ./utils/is-bot */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst _omit = __webpack_require__(/*! ./utils/omit */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/omit.js\");\nconst _interpolateas = __webpack_require__(/*! ./utils/interpolate-as */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ./utils/handle-smooth-scroll */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nfunction buildCancellationError() {\n return Object.assign(new Error(\"Route Cancelled\"), {\n cancelled: true\n });\n}\nasync function matchesMiddleware(options) {\n const matchers = await Promise.resolve(options.router.pageLoader.getMiddleware());\n if (!matchers) return false;\n const { pathname: asPathname } = (0, _parsepath.parsePath)(options.asPath);\n // remove basePath first since path prefix has to be in the order of `/${basePath}/${locale}`\n const cleanedAs = (0, _hasbasepath.hasBasePath)(asPathname) ? (0, _removebasepath.removeBasePath)(asPathname) : asPathname;\n const asWithBasePathAndLocale = (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(cleanedAs, options.locale));\n // Check only path match on client. Matching \"has\" should be done on server\n // where we can access more info such as headers, HttpOnly cookie, etc.\n return matchers.some((m)=>new RegExp(m.regexp).test(asWithBasePathAndLocale));\n}\nfunction stripOrigin(url) {\n const origin = (0, _utils.getLocationOrigin)();\n return url.startsWith(origin) ? url.substring(origin.length) : url;\n}\nfunction prepareUrlAs(router, url, as) {\n // If url and as provided as an object representation,\n // we'll format them into the string version here.\n let [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(router, url, true);\n const origin = (0, _utils.getLocationOrigin)();\n const hrefWasAbsolute = resolvedHref.startsWith(origin);\n const asWasAbsolute = resolvedAs && resolvedAs.startsWith(origin);\n resolvedHref = stripOrigin(resolvedHref);\n resolvedAs = resolvedAs ? stripOrigin(resolvedAs) : resolvedAs;\n const preparedUrl = hrefWasAbsolute ? resolvedHref : (0, _addbasepath.addBasePath)(resolvedHref);\n const preparedAs = as ? stripOrigin((0, _resolvehref.resolveHref)(router, as)) : resolvedAs || resolvedHref;\n return {\n url: preparedUrl,\n as: asWasAbsolute ? preparedAs : (0, _addbasepath.addBasePath)(preparedAs)\n };\n}\nfunction resolveDynamicRoute(pathname, pages) {\n const cleanPathname = (0, _removetrailingslash.removeTrailingSlash)((0, _denormalizepagepath.denormalizePagePath)(pathname));\n if (cleanPathname === \"/404\" || cleanPathname === \"/_error\") {\n return pathname;\n }\n // handle resolving href for dynamic routes\n if (!pages.includes(cleanPathname)) {\n // eslint-disable-next-line array-callback-return\n pages.some((page)=>{\n if ((0, _isdynamic.isDynamicRoute)(page) && (0, _routeregex.getRouteRegex)(page).re.test(cleanPathname)) {\n pathname = page;\n return true;\n }\n });\n }\n return (0, _removetrailingslash.removeTrailingSlash)(pathname);\n}\nfunction getMiddlewareData(source, response, options) {\n const nextConfig = {\n basePath: options.router.basePath,\n i18n: {\n locales: options.router.locales\n },\n trailingSlash: Boolean(false)\n };\n const rewriteHeader = response.headers.get(\"x-nextjs-rewrite\");\n let rewriteTarget = rewriteHeader || response.headers.get(\"x-nextjs-matched-path\");\n const matchedPath = response.headers.get(\"x-matched-path\");\n if (matchedPath && !rewriteTarget && !matchedPath.includes(\"__next_data_catchall\") && !matchedPath.includes(\"/_error\") && !matchedPath.includes(\"/404\")) {\n // leverage x-matched-path to detect next.config.js rewrites\n rewriteTarget = matchedPath;\n }\n if (rewriteTarget) {\n if (rewriteTarget.startsWith(\"/\") || false) {\n const parsedRewriteTarget = (0, _parserelativeurl.parseRelativeUrl)(rewriteTarget);\n const pathnameInfo = (0, _getnextpathnameinfo.getNextPathnameInfo)(parsedRewriteTarget.pathname, {\n nextConfig,\n parseData: true\n });\n let fsPathname = (0, _removetrailingslash.removeTrailingSlash)(pathnameInfo.pathname);\n return Promise.all([\n options.router.pageLoader.getPageList(),\n (0, _routeloader.getClientBuildManifest)()\n ]).then((param)=>{\n let [pages, { __rewrites: rewrites }] = param;\n let as = (0, _addlocale.addLocale)(pathnameInfo.pathname, pathnameInfo.locale);\n if ((0, _isdynamic.isDynamicRoute)(as) || !rewriteHeader && pages.includes((0, _normalizelocalepath.normalizeLocalePath)((0, _removebasepath.removeBasePath)(as), options.router.locales).pathname)) {\n const parsedSource = (0, _getnextpathnameinfo.getNextPathnameInfo)((0, _parserelativeurl.parseRelativeUrl)(source).pathname, {\n nextConfig: false ? 0 : nextConfig,\n parseData: true\n });\n as = (0, _addbasepath.addBasePath)(parsedSource.pathname);\n parsedRewriteTarget.pathname = as;\n }\n if (false) {} else if (!pages.includes(fsPathname)) {\n const resolvedPathname = resolveDynamicRoute(fsPathname, pages);\n if (resolvedPathname !== fsPathname) {\n fsPathname = resolvedPathname;\n }\n }\n const resolvedHref = !pages.includes(fsPathname) ? resolveDynamicRoute((0, _normalizelocalepath.normalizeLocalePath)((0, _removebasepath.removeBasePath)(parsedRewriteTarget.pathname), options.router.locales).pathname, pages) : fsPathname;\n if ((0, _isdynamic.isDynamicRoute)(resolvedHref)) {\n const matches = (0, _routematcher.getRouteMatcher)((0, _routeregex.getRouteRegex)(resolvedHref))(as);\n Object.assign(parsedRewriteTarget.query, matches || {});\n }\n return {\n type: \"rewrite\",\n parsedAs: parsedRewriteTarget,\n resolvedHref\n };\n });\n }\n const src = (0, _parsepath.parsePath)(source);\n const pathname = (0, _formatnextpathnameinfo.formatNextPathnameInfo)({\n ...(0, _getnextpathnameinfo.getNextPathnameInfo)(src.pathname, {\n nextConfig,\n parseData: true\n }),\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n });\n return Promise.resolve({\n type: \"redirect-external\",\n destination: \"\" + pathname + src.query + src.hash\n });\n }\n const redirectTarget = response.headers.get(\"x-nextjs-redirect\");\n if (redirectTarget) {\n if (redirectTarget.startsWith(\"/\")) {\n const src = (0, _parsepath.parsePath)(redirectTarget);\n const pathname = (0, _formatnextpathnameinfo.formatNextPathnameInfo)({\n ...(0, _getnextpathnameinfo.getNextPathnameInfo)(src.pathname, {\n nextConfig,\n parseData: true\n }),\n defaultLocale: options.router.defaultLocale,\n buildId: \"\"\n });\n return Promise.resolve({\n type: \"redirect-internal\",\n newAs: \"\" + pathname + src.query + src.hash,\n newUrl: \"\" + pathname + src.query + src.hash\n });\n }\n return Promise.resolve({\n type: \"redirect-external\",\n destination: redirectTarget\n });\n }\n return Promise.resolve({\n type: \"next\"\n });\n}\nasync function withMiddlewareEffects(options) {\n const matches = await matchesMiddleware(options);\n if (!matches || !options.fetchData) {\n return null;\n }\n const data = await options.fetchData();\n const effect = await getMiddlewareData(data.dataHref, data.response, options);\n return {\n dataHref: data.dataHref,\n json: data.json,\n response: data.response,\n text: data.text,\n cacheKey: data.cacheKey,\n effect\n };\n}\nconst manualScrollRestoration = false && 0;\nconst SSG_DATA_NOT_FOUND = Symbol(\"SSG_DATA_NOT_FOUND\");\nfunction fetchRetry(url, attempts, options) {\n return fetch(url, {\n // Cookies are required to be present for Next.js' SSG \"Preview Mode\".\n // Cookies may also be required for `getServerSideProps`.\n //\n // > `fetch` won’t send cookies, unless you set the credentials init\n // > option.\n // https://developer.mozilla.org/docs/Web/API/Fetch_API/Using_Fetch\n //\n // > For maximum browser compatibility when it comes to sending &\n // > receiving cookies, always supply the `credentials: 'same-origin'`\n // > option instead of relying on the default.\n // https://github.com/github/fetch#caveats\n credentials: \"same-origin\",\n method: options.method || \"GET\",\n headers: Object.assign({}, options.headers, {\n \"x-nextjs-data\": \"1\"\n })\n }).then((response)=>{\n return !response.ok && attempts > 1 && response.status >= 500 ? fetchRetry(url, attempts - 1, options) : response;\n });\n}\nfunction tryToParseAsJSON(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return null;\n }\n}\nfunction fetchNextData(param) {\n let { dataHref, inflightCache, isPrefetch, hasMiddleware, isServerRender, parseJSON, persistCache, isBackground, unstable_skipClientCache } = param;\n const { href: cacheKey } = new URL(dataHref, window.location.href);\n const getData = (params)=>{\n var _params_method;\n return fetchRetry(dataHref, isServerRender ? 3 : 1, {\n headers: Object.assign({}, isPrefetch ? {\n purpose: \"prefetch\"\n } : {}, isPrefetch && hasMiddleware ? {\n \"x-middleware-prefetch\": \"1\"\n } : {}),\n method: (_params_method = params == null ? void 0 : params.method) != null ? _params_method : \"GET\"\n }).then((response)=>{\n if (response.ok && (params == null ? void 0 : params.method) === \"HEAD\") {\n return {\n dataHref,\n response,\n text: \"\",\n json: {},\n cacheKey\n };\n }\n return response.text().then((text)=>{\n if (!response.ok) {\n /**\n * When the data response is a redirect because of a middleware\n * we do not consider it an error. The headers must bring the\n * mapped location.\n * TODO: Change the status code in the handler.\n */ if (hasMiddleware && [\n 301,\n 302,\n 307,\n 308\n ].includes(response.status)) {\n return {\n dataHref,\n response,\n text,\n json: {},\n cacheKey\n };\n }\n if (response.status === 404) {\n var _tryToParseAsJSON;\n if ((_tryToParseAsJSON = tryToParseAsJSON(text)) == null ? void 0 : _tryToParseAsJSON.notFound) {\n return {\n dataHref,\n json: {\n notFound: SSG_DATA_NOT_FOUND\n },\n response,\n text,\n cacheKey\n };\n }\n }\n const error = new Error(\"Failed to load static props\");\n /**\n * We should only trigger a server-side transition if this was\n * caused on a client-side transition. Otherwise, we'd get into\n * an infinite loop.\n */ if (!isServerRender) {\n (0, _routeloader.markAssetError)(error);\n }\n throw error;\n }\n return {\n dataHref,\n json: parseJSON ? tryToParseAsJSON(text) : null,\n response,\n text,\n cacheKey\n };\n });\n }).then((data)=>{\n if (!persistCache || \"development\" !== \"production\" || 0) {\n delete inflightCache[cacheKey];\n }\n return data;\n }).catch((err)=>{\n if (!unstable_skipClientCache) {\n delete inflightCache[cacheKey];\n }\n if (err.message === \"Failed to fetch\" || // firefox\n err.message === \"NetworkError when attempting to fetch resource.\" || // safari\n err.message === \"Load failed\") {\n (0, _routeloader.markAssetError)(err);\n }\n throw err;\n });\n };\n // when skipping client cache we wait to update\n // inflight cache until successful data response\n // this allows racing click event with fetching newer data\n // without blocking navigation when stale data is available\n if (unstable_skipClientCache && persistCache) {\n return getData({}).then((data)=>{\n if (data.response.headers.get(\"x-middleware-cache\") !== \"no-cache\") {\n // only update cache if not marked as no-cache\n inflightCache[cacheKey] = Promise.resolve(data);\n }\n return data;\n });\n }\n if (inflightCache[cacheKey] !== undefined) {\n return inflightCache[cacheKey];\n }\n return inflightCache[cacheKey] = getData(isBackground ? {\n method: \"HEAD\"\n } : {});\n}\nfunction createKey() {\n return Math.random().toString(36).slice(2, 10);\n}\nfunction handleHardNavigation(param) {\n let { url, router } = param;\n // ensure we don't trigger a hard navigation to the same\n // URL as this can end up with an infinite refresh\n if (url === (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(router.asPath, router.locale))) {\n throw new Error(\"Invariant: attempted to hard navigate to the same URL \" + url + \" \" + location.href);\n }\n window.location.href = url;\n}\nconst getCancelledHandler = (param)=>{\n let { route, router } = param;\n let cancelled = false;\n const cancel = router.clc = ()=>{\n cancelled = true;\n };\n const handleCancelled = ()=>{\n if (cancelled) {\n const error = new Error('Abort fetching component for route: \"' + route + '\"');\n error.cancelled = true;\n throw error;\n }\n if (cancel === router.clc) {\n router.clc = null;\n }\n };\n return handleCancelled;\n};\nclass Router {\n reload() {\n window.location.reload();\n }\n /**\n * Go back in history\n */ back() {\n window.history.back();\n }\n /**\n * Go forward in history\n */ forward() {\n window.history.forward();\n }\n /**\n * Performs a `pushState` with arguments\n * @param url of the route\n * @param as masks `url` for the browser\n * @param options object you can define `shallow` and other options\n */ push(url, as, options) {\n if (options === void 0) options = {};\n if (false) {}\n ({ url, as } = prepareUrlAs(this, url, as));\n return this.change(\"pushState\", url, as, options);\n }\n /**\n * Performs a `replaceState` with arguments\n * @param url of the route\n * @param as masks `url` for the browser\n * @param options object you can define `shallow` and other options\n */ replace(url, as, options) {\n if (options === void 0) options = {};\n ({ url, as } = prepareUrlAs(this, url, as));\n return this.change(\"replaceState\", url, as, options);\n }\n async _bfl(as, resolvedAs, locale, skipNavigate) {\n if (true) {\n let matchesBflStatic = false;\n let matchesBflDynamic = false;\n for (const curAs of [\n as,\n resolvedAs\n ]){\n if (curAs) {\n const asNoSlash = (0, _removetrailingslash.removeTrailingSlash)(new URL(curAs, \"http://n\").pathname);\n const asNoSlashLocale = (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(asNoSlash, locale || this.locale));\n if (asNoSlash !== (0, _removetrailingslash.removeTrailingSlash)(new URL(this.asPath, \"http://n\").pathname)) {\n var _this__bfl_s, _this__bfl_s1;\n matchesBflStatic = matchesBflStatic || !!((_this__bfl_s = this._bfl_s) == null ? void 0 : _this__bfl_s.contains(asNoSlash)) || !!((_this__bfl_s1 = this._bfl_s) == null ? void 0 : _this__bfl_s1.contains(asNoSlashLocale));\n for (const normalizedAS of [\n asNoSlash,\n asNoSlashLocale\n ]){\n // if any sub-path of as matches a dynamic filter path\n // it should be hard navigated\n const curAsParts = normalizedAS.split(\"/\");\n for(let i = 0; !matchesBflDynamic && i < curAsParts.length + 1; i++){\n var _this__bfl_d;\n const currentPart = curAsParts.slice(0, i).join(\"/\");\n if (currentPart && ((_this__bfl_d = this._bfl_d) == null ? void 0 : _this__bfl_d.contains(currentPart))) {\n matchesBflDynamic = true;\n break;\n }\n }\n }\n // if the client router filter is matched then we trigger\n // a hard navigation\n if (matchesBflStatic || matchesBflDynamic) {\n if (skipNavigate) {\n return true;\n }\n handleHardNavigation({\n url: (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, locale || this.locale, this.defaultLocale)),\n router: this\n });\n return new Promise(()=>{});\n }\n }\n }\n }\n }\n return false;\n }\n async change(method, url, as, options, forcedScroll) {\n var _this_components_pathname;\n if (!(0, _islocalurl.isLocalURL)(url)) {\n handleHardNavigation({\n url,\n router: this\n });\n return false;\n }\n // WARNING: `_h` is an internal option for handing Next.js client-side\n // hydration. Your app should _never_ use this property. It may change at\n // any time without notice.\n const isQueryUpdating = options._h === 1;\n if (!isQueryUpdating && !options.shallow) {\n await this._bfl(as, undefined, options.locale);\n }\n let shouldResolveHref = isQueryUpdating || options._shouldResolveHref || (0, _parsepath.parsePath)(url).pathname === (0, _parsepath.parsePath)(as).pathname;\n const nextState = {\n ...this.state\n };\n // for static pages with query params in the URL we delay\n // marking the router ready until after the query is updated\n // or a navigation has occurred\n const readyStateChange = this.isReady !== true;\n this.isReady = true;\n const isSsr = this.isSsr;\n if (!isQueryUpdating) {\n this.isSsr = false;\n }\n // if a route transition is already in progress before\n // the query updating is triggered ignore query updating\n if (isQueryUpdating && this.clc) {\n return false;\n }\n const prevLocale = nextState.locale;\n if (false) { var _this_locales; }\n // marking route changes as a navigation start entry\n if (_utils.ST) {\n performance.mark(\"routeChange\");\n }\n const { shallow = false, scroll = true } = options;\n const routeProps = {\n shallow\n };\n if (this._inFlightRoute && this.clc) {\n if (!isSsr) {\n Router.events.emit(\"routeChangeError\", buildCancellationError(), this._inFlightRoute, routeProps);\n }\n this.clc();\n this.clc = null;\n }\n as = (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)((0, _hasbasepath.hasBasePath)(as) ? (0, _removebasepath.removeBasePath)(as) : as, options.locale, this.defaultLocale));\n const cleanedAs = (0, _removelocale.removeLocale)((0, _hasbasepath.hasBasePath)(as) ? (0, _removebasepath.removeBasePath)(as) : as, nextState.locale);\n this._inFlightRoute = as;\n const localeChange = prevLocale !== nextState.locale;\n // If the url change is only related to a hash change\n // We should not proceed. We should only change the state.\n if (!isQueryUpdating && this.onlyAHashChange(cleanedAs) && !localeChange) {\n nextState.asPath = cleanedAs;\n Router.events.emit(\"hashChangeStart\", as, routeProps);\n // TODO: do we need the resolved href when only a hash change?\n this.changeState(method, url, as, {\n ...options,\n scroll: false\n });\n if (scroll) {\n this.scrollToHash(cleanedAs);\n }\n try {\n await this.set(nextState, this.components[nextState.route], null);\n } catch (err) {\n if ((0, _iserror.default)(err) && err.cancelled) {\n Router.events.emit(\"routeChangeError\", err, cleanedAs, routeProps);\n }\n throw err;\n }\n Router.events.emit(\"hashChangeComplete\", as, routeProps);\n return true;\n }\n let parsed = (0, _parserelativeurl.parseRelativeUrl)(url);\n let { pathname, query } = parsed;\n // The build manifest needs to be loaded before auto-static dynamic pages\n // get their query parameters to allow ensuring they can be parsed properly\n // when rewritten to\n let pages, rewrites;\n try {\n [pages, { __rewrites: rewrites }] = await Promise.all([\n this.pageLoader.getPageList(),\n (0, _routeloader.getClientBuildManifest)(),\n this.pageLoader.getMiddleware()\n ]);\n } catch (err) {\n // If we fail to resolve the page list or client-build manifest, we must\n // do a server-side transition:\n handleHardNavigation({\n url: as,\n router: this\n });\n return false;\n }\n // If asked to change the current URL we should reload the current page\n // (not location.reload() but reload getInitialProps and other Next.js stuffs)\n // We also need to set the method = replaceState always\n // as this should not go into the history (That's how browsers work)\n // We should compare the new asPath to the current asPath, not the url\n if (!this.urlIsNew(cleanedAs) && !localeChange) {\n method = \"replaceState\";\n }\n // we need to resolve the as value using rewrites for dynamic SSG\n // pages to allow building the data URL correctly\n let resolvedAs = as;\n // url and as should always be prefixed with basePath by this\n // point by either next/link or router.push/replace so strip the\n // basePath from the pathname to match the pages dir 1-to-1\n pathname = pathname ? (0, _removetrailingslash.removeTrailingSlash)((0, _removebasepath.removeBasePath)(pathname)) : pathname;\n let route = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n const parsedAsPathname = as.startsWith(\"/\") && (0, _parserelativeurl.parseRelativeUrl)(as).pathname;\n // if we detected the path as app route during prefetching\n // trigger hard navigation\n if ((_this_components_pathname = this.components[pathname]) == null ? void 0 : _this_components_pathname.__appRouter) {\n handleHardNavigation({\n url: as,\n router: this\n });\n return new Promise(()=>{});\n }\n const isMiddlewareRewrite = !!(parsedAsPathname && route !== parsedAsPathname && (!(0, _isdynamic.isDynamicRoute)(route) || !(0, _routematcher.getRouteMatcher)((0, _routeregex.getRouteRegex)(route))(parsedAsPathname)));\n // we don't attempt resolve asPath when we need to execute\n // middleware as the resolving will occur server-side\n const isMiddlewareMatch = !options.shallow && await matchesMiddleware({\n asPath: as,\n locale: nextState.locale,\n router: this\n });\n if (isQueryUpdating && isMiddlewareMatch) {\n shouldResolveHref = false;\n }\n if (shouldResolveHref && pathname !== \"/_error\") {\n options._shouldResolveHref = true;\n if (false) {} else {\n parsed.pathname = resolveDynamicRoute(pathname, pages);\n if (parsed.pathname !== pathname) {\n pathname = parsed.pathname;\n parsed.pathname = (0, _addbasepath.addBasePath)(pathname);\n if (!isMiddlewareMatch) {\n url = (0, _formaturl.formatWithValidation)(parsed);\n }\n }\n }\n }\n if (!(0, _islocalurl.isLocalURL)(as)) {\n if (true) {\n throw new Error('Invalid href: \"' + url + '\" and as: \"' + as + '\", received relative href and external as' + \"\\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as\");\n }\n handleHardNavigation({\n url: as,\n router: this\n });\n return false;\n }\n resolvedAs = (0, _removelocale.removeLocale)((0, _removebasepath.removeBasePath)(resolvedAs), nextState.locale);\n route = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n let routeMatch = false;\n if ((0, _isdynamic.isDynamicRoute)(route)) {\n const parsedAs = (0, _parserelativeurl.parseRelativeUrl)(resolvedAs);\n const asPathname = parsedAs.pathname;\n const routeRegex = (0, _routeregex.getRouteRegex)(route);\n routeMatch = (0, _routematcher.getRouteMatcher)(routeRegex)(asPathname);\n const shouldInterpolate = route === asPathname;\n const interpolatedAs = shouldInterpolate ? (0, _interpolateas.interpolateAs)(route, asPathname, query) : {};\n if (!routeMatch || shouldInterpolate && !interpolatedAs.result) {\n const missingParams = Object.keys(routeRegex.groups).filter((param)=>!query[param] && !routeRegex.groups[param].optional);\n if (missingParams.length > 0 && !isMiddlewareMatch) {\n if (true) {\n console.warn(\"\" + (shouldInterpolate ? \"Interpolating href\" : \"Mismatching `as` and `href`\") + \" failed to manually provide \" + (\"the params: \" + missingParams.join(\", \") + \" in the `href`'s `query`\"));\n }\n throw new Error((shouldInterpolate ? \"The provided `href` (\" + url + \") value is missing query values (\" + missingParams.join(\", \") + \") to be interpolated properly. \" : \"The provided `as` value (\" + asPathname + \") is incompatible with the `href` value (\" + route + \"). \") + (\"Read more: https://nextjs.org/docs/messages/\" + (shouldInterpolate ? \"href-interpolation-failed\" : \"incompatible-href-as\")));\n }\n } else if (shouldInterpolate) {\n as = (0, _formaturl.formatWithValidation)(Object.assign({}, parsedAs, {\n pathname: interpolatedAs.result,\n query: (0, _omit.omit)(query, interpolatedAs.params)\n }));\n } else {\n // Merge params into `query`, overwriting any specified in search\n Object.assign(query, routeMatch);\n }\n }\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeStart\", as, routeProps);\n }\n const isErrorRoute = this.pathname === \"/404\" || this.pathname === \"/_error\";\n try {\n var _self___NEXT_DATA___props_pageProps, _self___NEXT_DATA___props, _routeInfo_props;\n let routeInfo = await this.getRouteInfo({\n route,\n pathname,\n query,\n as,\n resolvedAs,\n routeProps,\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n hasMiddleware: isMiddlewareMatch,\n unstable_skipClientCache: options.unstable_skipClientCache,\n isQueryUpdating: isQueryUpdating && !this.isFallback,\n isMiddlewareRewrite\n });\n if (!isQueryUpdating && !options.shallow) {\n await this._bfl(as, \"resolvedAs\" in routeInfo ? routeInfo.resolvedAs : undefined, nextState.locale);\n }\n if (\"route\" in routeInfo && isMiddlewareMatch) {\n pathname = routeInfo.route || route;\n route = pathname;\n if (!routeProps.shallow) {\n query = Object.assign({}, routeInfo.query || {}, query);\n }\n const cleanedParsedPathname = (0, _hasbasepath.hasBasePath)(parsed.pathname) ? (0, _removebasepath.removeBasePath)(parsed.pathname) : parsed.pathname;\n if (routeMatch && pathname !== cleanedParsedPathname) {\n Object.keys(routeMatch).forEach((key)=>{\n if (routeMatch && query[key] === routeMatch[key]) {\n delete query[key];\n }\n });\n }\n if ((0, _isdynamic.isDynamicRoute)(pathname)) {\n const prefixedAs = !routeProps.shallow && routeInfo.resolvedAs ? routeInfo.resolvedAs : (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(new URL(as, location.href).pathname, nextState.locale), true);\n let rewriteAs = prefixedAs;\n if ((0, _hasbasepath.hasBasePath)(rewriteAs)) {\n rewriteAs = (0, _removebasepath.removeBasePath)(rewriteAs);\n }\n if (false) {}\n const routeRegex = (0, _routeregex.getRouteRegex)(pathname);\n const curRouteMatch = (0, _routematcher.getRouteMatcher)(routeRegex)(new URL(rewriteAs, location.href).pathname);\n if (curRouteMatch) {\n Object.assign(query, curRouteMatch);\n }\n }\n }\n // If the routeInfo brings a redirect we simply apply it.\n if (\"type\" in routeInfo) {\n if (routeInfo.type === \"redirect-internal\") {\n return this.change(method, routeInfo.newUrl, routeInfo.newAs, options);\n } else {\n handleHardNavigation({\n url: routeInfo.destination,\n router: this\n });\n return new Promise(()=>{});\n }\n }\n const component = routeInfo.Component;\n if (component && component.unstable_scriptLoader) {\n const scripts = [].concat(component.unstable_scriptLoader());\n scripts.forEach((script)=>{\n (0, _script.handleClientScriptLoad)(script.props);\n });\n }\n // handle redirect on client-transition\n if ((routeInfo.__N_SSG || routeInfo.__N_SSP) && routeInfo.props) {\n if (routeInfo.props.pageProps && routeInfo.props.pageProps.__N_REDIRECT) {\n // Use the destination from redirect without adding locale\n options.locale = false;\n const destination = routeInfo.props.pageProps.__N_REDIRECT;\n // check if destination is internal (resolves to a page) and attempt\n // client-navigation if it is falling back to hard navigation if\n // it's not\n if (destination.startsWith(\"/\") && routeInfo.props.pageProps.__N_REDIRECT_BASE_PATH !== false) {\n const parsedHref = (0, _parserelativeurl.parseRelativeUrl)(destination);\n parsedHref.pathname = resolveDynamicRoute(parsedHref.pathname, pages);\n const { url: newUrl, as: newAs } = prepareUrlAs(this, destination, destination);\n return this.change(method, newUrl, newAs, options);\n }\n handleHardNavigation({\n url: destination,\n router: this\n });\n return new Promise(()=>{});\n }\n nextState.isPreview = !!routeInfo.props.__N_PREVIEW;\n // handle SSG data 404\n if (routeInfo.props.notFound === SSG_DATA_NOT_FOUND) {\n let notFoundRoute;\n try {\n await this.fetchComponent(\"/404\");\n notFoundRoute = \"/404\";\n } catch (_) {\n notFoundRoute = \"/_error\";\n }\n routeInfo = await this.getRouteInfo({\n route: notFoundRoute,\n pathname: notFoundRoute,\n query,\n as,\n resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n isNotFound: true\n });\n if (\"type\" in routeInfo) {\n throw new Error(\"Unexpected middleware effect on /404\");\n }\n }\n }\n if (isQueryUpdating && this.pathname === \"/_error\" && ((_self___NEXT_DATA___props = self.__NEXT_DATA__.props) == null ? void 0 : (_self___NEXT_DATA___props_pageProps = _self___NEXT_DATA___props.pageProps) == null ? void 0 : _self___NEXT_DATA___props_pageProps.statusCode) === 500 && ((_routeInfo_props = routeInfo.props) == null ? void 0 : _routeInfo_props.pageProps)) {\n // ensure statusCode is still correct for static 500 page\n // when updating query information\n routeInfo.props.pageProps.statusCode = 500;\n }\n var _routeInfo_route;\n // shallow routing is only allowed for same page URL changes.\n const isValidShallowRoute = options.shallow && nextState.route === ((_routeInfo_route = routeInfo.route) != null ? _routeInfo_route : route);\n var _options_scroll;\n const shouldScroll = (_options_scroll = options.scroll) != null ? _options_scroll : !isQueryUpdating && !isValidShallowRoute;\n const resetScroll = shouldScroll ? {\n x: 0,\n y: 0\n } : null;\n const upcomingScrollState = forcedScroll != null ? forcedScroll : resetScroll;\n // the new state that the router gonna set\n const upcomingRouterState = {\n ...nextState,\n route,\n pathname,\n query,\n asPath: cleanedAs,\n isFallback: false\n };\n // When the page being rendered is the 404 page, we should only update the\n // query parameters. Route changes here might add the basePath when it\n // wasn't originally present. This is also why this block is before the\n // below `changeState` call which updates the browser's history (changing\n // the URL).\n if (isQueryUpdating && isErrorRoute) {\n var _self___NEXT_DATA___props_pageProps1, _self___NEXT_DATA___props1, _routeInfo_props1;\n routeInfo = await this.getRouteInfo({\n route: this.pathname,\n pathname: this.pathname,\n query,\n as,\n resolvedAs,\n routeProps: {\n shallow: false\n },\n locale: nextState.locale,\n isPreview: nextState.isPreview,\n isQueryUpdating: isQueryUpdating && !this.isFallback\n });\n if (\"type\" in routeInfo) {\n throw new Error(\"Unexpected middleware effect on \" + this.pathname);\n }\n if (this.pathname === \"/_error\" && ((_self___NEXT_DATA___props1 = self.__NEXT_DATA__.props) == null ? void 0 : (_self___NEXT_DATA___props_pageProps1 = _self___NEXT_DATA___props1.pageProps) == null ? void 0 : _self___NEXT_DATA___props_pageProps1.statusCode) === 500 && ((_routeInfo_props1 = routeInfo.props) == null ? void 0 : _routeInfo_props1.pageProps)) {\n // ensure statusCode is still correct for static 500 page\n // when updating query information\n routeInfo.props.pageProps.statusCode = 500;\n }\n try {\n await this.set(upcomingRouterState, routeInfo, upcomingScrollState);\n } catch (err) {\n if ((0, _iserror.default)(err) && err.cancelled) {\n Router.events.emit(\"routeChangeError\", err, cleanedAs, routeProps);\n }\n throw err;\n }\n return true;\n }\n Router.events.emit(\"beforeHistoryChange\", as, routeProps);\n this.changeState(method, url, as, options);\n // for query updates we can skip it if the state is unchanged and we don't\n // need to scroll\n // https://github.com/vercel/next.js/issues/37139\n const canSkipUpdating = isQueryUpdating && !upcomingScrollState && !readyStateChange && !localeChange && (0, _comparestates.compareRouterStates)(upcomingRouterState, this.state);\n if (!canSkipUpdating) {\n try {\n await this.set(upcomingRouterState, routeInfo, upcomingScrollState);\n } catch (e) {\n if (e.cancelled) routeInfo.error = routeInfo.error || e;\n else throw e;\n }\n if (routeInfo.error) {\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeError\", routeInfo.error, cleanedAs, routeProps);\n }\n throw routeInfo.error;\n }\n if (false) {}\n if (!isQueryUpdating) {\n Router.events.emit(\"routeChangeComplete\", as, routeProps);\n }\n // A hash mark # is the optional last part of a URL\n const hashRegex = /#.+$/;\n if (shouldScroll && hashRegex.test(as)) {\n this.scrollToHash(as);\n }\n }\n return true;\n } catch (err) {\n if ((0, _iserror.default)(err) && err.cancelled) {\n return false;\n }\n throw err;\n }\n }\n changeState(method, url, as, options) {\n if (options === void 0) options = {};\n if (true) {\n if (typeof window.history === \"undefined\") {\n console.error(\"Warning: window.history is not available.\");\n return;\n }\n if (typeof window.history[method] === \"undefined\") {\n console.error(\"Warning: window.history.\" + method + \" is not available\");\n return;\n }\n }\n if (method !== \"pushState\" || (0, _utils.getURL)() !== as) {\n this._shallow = options.shallow;\n window.history[method]({\n url,\n as,\n options,\n __N: true,\n key: this._key = method !== \"pushState\" ? this._key : createKey()\n }, // Passing the empty string here should be safe against future changes to the method.\n // https://developer.mozilla.org/docs/Web/API/History/replaceState\n \"\", as);\n }\n }\n async handleRouteInfoError(err, pathname, query, as, routeProps, loadErrorFail) {\n console.error(err);\n if (err.cancelled) {\n // bubble up cancellation errors\n throw err;\n }\n if ((0, _routeloader.isAssetError)(err) || loadErrorFail) {\n Router.events.emit(\"routeChangeError\", err, as, routeProps);\n // If we can't load the page it could be one of following reasons\n // 1. Page doesn't exists\n // 2. Page does exist in a different zone\n // 3. Internal error while loading the page\n // So, doing a hard reload is the proper way to deal with this.\n handleHardNavigation({\n url: as,\n router: this\n });\n // Changing the URL doesn't block executing the current code path.\n // So let's throw a cancellation error stop the routing logic.\n throw buildCancellationError();\n }\n try {\n let props;\n const { page: Component, styleSheets } = await this.fetchComponent(\"/_error\");\n const routeInfo = {\n props,\n Component,\n styleSheets,\n err,\n error: err\n };\n if (!routeInfo.props) {\n try {\n routeInfo.props = await this.getInitialProps(Component, {\n err,\n pathname,\n query\n });\n } catch (gipErr) {\n console.error(\"Error in error page `getInitialProps`: \", gipErr);\n routeInfo.props = {};\n }\n }\n return routeInfo;\n } catch (routeInfoErr) {\n return this.handleRouteInfoError((0, _iserror.default)(routeInfoErr) ? routeInfoErr : new Error(routeInfoErr + \"\"), pathname, query, as, routeProps, true);\n }\n }\n async getRouteInfo(param) {\n let { route: requestedRoute, pathname, query, as, resolvedAs, routeProps, locale, hasMiddleware, isPreview, unstable_skipClientCache, isQueryUpdating, isMiddlewareRewrite, isNotFound } = param;\n /**\n * This `route` binding can change if there's a rewrite\n * so we keep a reference to the original requested route\n * so we can store the cache for it and avoid re-requesting every time\n * for shallow routing purposes.\n */ let route = requestedRoute;\n try {\n var _data_effect, _data_effect1, _data_effect2, _data_response;\n let existingInfo = this.components[route];\n if (routeProps.shallow && existingInfo && this.route === route) {\n return existingInfo;\n }\n const handleCancelled = getCancelledHandler({\n route,\n router: this\n });\n if (hasMiddleware) {\n existingInfo = undefined;\n }\n let cachedRouteInfo = existingInfo && !(\"initial\" in existingInfo) && \"development\" !== \"development\" ? 0 : undefined;\n const isBackground = isQueryUpdating;\n const fetchNextDataParams = {\n dataHref: this.pageLoader.getDataHref({\n href: (0, _formaturl.formatWithValidation)({\n pathname,\n query\n }),\n skipInterpolation: true,\n asPath: isNotFound ? \"/404\" : resolvedAs,\n locale\n }),\n hasMiddleware: true,\n isServerRender: this.isSsr,\n parseJSON: true,\n inflightCache: isBackground ? this.sbc : this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache,\n isBackground\n };\n let data = isQueryUpdating && !isMiddlewareRewrite ? null : await withMiddlewareEffects({\n fetchData: ()=>fetchNextData(fetchNextDataParams),\n asPath: isNotFound ? \"/404\" : resolvedAs,\n locale: locale,\n router: this\n }).catch((err)=>{\n // we don't hard error during query updating\n // as it's un-necessary and doesn't need to be fatal\n // unless it is a fallback route and the props can't\n // be loaded\n if (isQueryUpdating) {\n return null;\n }\n throw err;\n });\n // when rendering error routes we don't apply middleware\n // effects\n if (data && (pathname === \"/_error\" || pathname === \"/404\")) {\n data.effect = undefined;\n }\n if (isQueryUpdating) {\n if (!data) {\n data = {\n json: self.__NEXT_DATA__.props\n };\n } else {\n data.json = self.__NEXT_DATA__.props;\n }\n }\n handleCancelled();\n if ((data == null ? void 0 : (_data_effect = data.effect) == null ? void 0 : _data_effect.type) === \"redirect-internal\" || (data == null ? void 0 : (_data_effect1 = data.effect) == null ? void 0 : _data_effect1.type) === \"redirect-external\") {\n return data.effect;\n }\n if ((data == null ? void 0 : (_data_effect2 = data.effect) == null ? void 0 : _data_effect2.type) === \"rewrite\") {\n const resolvedRoute = (0, _removetrailingslash.removeTrailingSlash)(data.effect.resolvedHref);\n const pages = await this.pageLoader.getPageList();\n // during query updating the page must match although during\n // client-transition a redirect that doesn't match a page\n // can be returned and this should trigger a hard navigation\n // which is valid for incremental migration\n if (!isQueryUpdating || pages.includes(resolvedRoute)) {\n route = resolvedRoute;\n pathname = data.effect.resolvedHref;\n query = {\n ...query,\n ...data.effect.parsedAs.query\n };\n resolvedAs = (0, _removebasepath.removeBasePath)((0, _normalizelocalepath.normalizeLocalePath)(data.effect.parsedAs.pathname, this.locales).pathname);\n // Check again the cache with the new destination.\n existingInfo = this.components[route];\n if (routeProps.shallow && existingInfo && this.route === route && !hasMiddleware) {\n // If we have a match with the current route due to rewrite,\n // we can copy the existing information to the rewritten one.\n // Then, we return the information along with the matched route.\n return {\n ...existingInfo,\n route\n };\n }\n }\n }\n if ((0, _isapiroute.isAPIRoute)(route)) {\n handleHardNavigation({\n url: as,\n router: this\n });\n return new Promise(()=>{});\n }\n const routeInfo = cachedRouteInfo || await this.fetchComponent(route).then((res)=>({\n Component: res.page,\n styleSheets: res.styleSheets,\n __N_SSG: res.mod.__N_SSG,\n __N_SSP: res.mod.__N_SSP\n }));\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/react-is/index.js\");\n if (!isValidElementType(routeInfo.Component)) {\n throw new Error('The default export is not a React Component in page: \"' + pathname + '\"');\n }\n }\n const wasBailedPrefetch = data == null ? void 0 : (_data_response = data.response) == null ? void 0 : _data_response.headers.get(\"x-middleware-skip\");\n const shouldFetchData = routeInfo.__N_SSG || routeInfo.__N_SSP;\n // For non-SSG prefetches that bailed before sending data\n // we clear the cache to fetch full response\n if (wasBailedPrefetch && (data == null ? void 0 : data.dataHref)) {\n delete this.sdc[data.dataHref];\n }\n const { props, cacheKey } = await this._getData(async ()=>{\n if (shouldFetchData) {\n if ((data == null ? void 0 : data.json) && !wasBailedPrefetch) {\n return {\n cacheKey: data.cacheKey,\n props: data.json\n };\n }\n const dataHref = (data == null ? void 0 : data.dataHref) ? data.dataHref : this.pageLoader.getDataHref({\n href: (0, _formaturl.formatWithValidation)({\n pathname,\n query\n }),\n asPath: resolvedAs,\n locale\n });\n const fetched = await fetchNextData({\n dataHref,\n isServerRender: this.isSsr,\n parseJSON: true,\n inflightCache: wasBailedPrefetch ? {} : this.sdc,\n persistCache: !isPreview,\n isPrefetch: false,\n unstable_skipClientCache\n });\n return {\n cacheKey: fetched.cacheKey,\n props: fetched.json || {}\n };\n }\n return {\n headers: {},\n props: await this.getInitialProps(routeInfo.Component, {\n pathname,\n query,\n asPath: as,\n locale,\n locales: this.locales,\n defaultLocale: this.defaultLocale\n })\n };\n });\n // Only bust the data cache for SSP routes although\n // middleware can skip cache per request with\n // x-middleware-cache: no-cache as well\n if (routeInfo.__N_SSP && fetchNextDataParams.dataHref && cacheKey) {\n delete this.sdc[cacheKey];\n }\n // we kick off a HEAD request in the background\n // when a non-prefetch request is made to signal revalidation\n if (!this.isPreview && routeInfo.__N_SSG && \"development\" !== \"development\" && 0) {}\n props.pageProps = Object.assign({}, props.pageProps);\n routeInfo.props = props;\n routeInfo.route = route;\n routeInfo.query = query;\n routeInfo.resolvedAs = resolvedAs;\n this.components[route] = routeInfo;\n return routeInfo;\n } catch (err) {\n return this.handleRouteInfoError((0, _iserror.getProperError)(err), pathname, query, as, routeProps);\n }\n }\n set(state, data, resetScroll) {\n this.state = state;\n return this.sub(data, this.components[\"/_app\"].Component, resetScroll);\n }\n /**\n * Callback to execute before replacing router state\n * @param cb callback to be executed\n */ beforePopState(cb) {\n this._bps = cb;\n }\n onlyAHashChange(as) {\n if (!this.asPath) return false;\n const [oldUrlNoHash, oldHash] = this.asPath.split(\"#\", 2);\n const [newUrlNoHash, newHash] = as.split(\"#\", 2);\n // Makes sure we scroll to the provided hash if the url/hash are the same\n if (newHash && oldUrlNoHash === newUrlNoHash && oldHash === newHash) {\n return true;\n }\n // If the urls are change, there's more than a hash change\n if (oldUrlNoHash !== newUrlNoHash) {\n return false;\n }\n // If the hash has changed, then it's a hash only change.\n // This check is necessary to handle both the enter and\n // leave hash === '' cases. The identity case falls through\n // and is treated as a next reload.\n return oldHash !== newHash;\n }\n scrollToHash(as) {\n const [, hash = \"\"] = as.split(\"#\", 2);\n (0, _handlesmoothscroll.handleSmoothScroll)(()=>{\n // Scroll to top if the hash is just `#` with no value or `#top`\n // To mirror browsers\n if (hash === \"\" || hash === \"top\") {\n window.scrollTo(0, 0);\n return;\n }\n // Decode hash to make non-latin anchor works.\n const rawHash = decodeURIComponent(hash);\n // First we check if the element by id is found\n const idEl = document.getElementById(rawHash);\n if (idEl) {\n idEl.scrollIntoView();\n return;\n }\n // If there's no element with the id, we check the `name` property\n // To mirror browsers\n const nameEl = document.getElementsByName(rawHash)[0];\n if (nameEl) {\n nameEl.scrollIntoView();\n }\n }, {\n onlyHashChange: this.onlyAHashChange(as)\n });\n }\n urlIsNew(asPath) {\n return this.asPath !== asPath;\n }\n /**\n * Prefetch page code, you may wait for the data during page rendering.\n * This feature only works in production!\n * @param url the href of prefetched page\n * @param asPath the as path of the prefetched page\n */ async prefetch(url, asPath, options) {\n if (asPath === void 0) asPath = url;\n if (options === void 0) options = {};\n // Prefetch is not supported in development mode because it would trigger on-demand-entries\n if (true) {\n return;\n }\n if ( true && (0, _isbot.isBot)(window.navigator.userAgent)) {\n // No prefetches for bots that render the link since they are typically navigating\n // links via the equivalent of a hard navigation and hence never utilize these\n // prefetches.\n return;\n }\n let parsed = (0, _parserelativeurl.parseRelativeUrl)(url);\n const urlPathname = parsed.pathname;\n let { pathname, query } = parsed;\n const originalPathname = pathname;\n if (false) {}\n const pages = await this.pageLoader.getPageList();\n let resolvedAs = asPath;\n const locale = typeof options.locale !== \"undefined\" ? options.locale || undefined : this.locale;\n const isMiddlewareMatch = await matchesMiddleware({\n asPath: asPath,\n locale: locale,\n router: this\n });\n if (false) {}\n parsed.pathname = resolveDynamicRoute(parsed.pathname, pages);\n if ((0, _isdynamic.isDynamicRoute)(parsed.pathname)) {\n pathname = parsed.pathname;\n parsed.pathname = pathname;\n Object.assign(query, (0, _routematcher.getRouteMatcher)((0, _routeregex.getRouteRegex)(parsed.pathname))((0, _parsepath.parsePath)(asPath).pathname) || {});\n if (!isMiddlewareMatch) {\n url = (0, _formaturl.formatWithValidation)(parsed);\n }\n }\n const data = false ? 0 : await withMiddlewareEffects({\n fetchData: ()=>fetchNextData({\n dataHref: this.pageLoader.getDataHref({\n href: (0, _formaturl.formatWithValidation)({\n pathname: originalPathname,\n query\n }),\n skipInterpolation: true,\n asPath: resolvedAs,\n locale\n }),\n hasMiddleware: true,\n isServerRender: false,\n parseJSON: true,\n inflightCache: this.sdc,\n persistCache: !this.isPreview,\n isPrefetch: true\n }),\n asPath: asPath,\n locale: locale,\n router: this\n });\n /**\n * If there was a rewrite we apply the effects of the rewrite on the\n * current parameters for the prefetch.\n */ if ((data == null ? void 0 : data.effect.type) === \"rewrite\") {\n parsed.pathname = data.effect.resolvedHref;\n pathname = data.effect.resolvedHref;\n query = {\n ...query,\n ...data.effect.parsedAs.query\n };\n resolvedAs = data.effect.parsedAs.pathname;\n url = (0, _formaturl.formatWithValidation)(parsed);\n }\n /**\n * If there is a redirect to an external destination then we don't have\n * to prefetch content as it will be unused.\n */ if ((data == null ? void 0 : data.effect.type) === \"redirect-external\") {\n return;\n }\n const route = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n if (await this._bfl(asPath, resolvedAs, options.locale, true)) {\n this.components[urlPathname] = {\n __appRouter: true\n };\n }\n await Promise.all([\n this.pageLoader._isSsg(route).then((isSsg)=>{\n return isSsg ? fetchNextData({\n dataHref: (data == null ? void 0 : data.json) ? data == null ? void 0 : data.dataHref : this.pageLoader.getDataHref({\n href: url,\n asPath: resolvedAs,\n locale: locale\n }),\n isServerRender: false,\n parseJSON: true,\n inflightCache: this.sdc,\n persistCache: !this.isPreview,\n isPrefetch: true,\n unstable_skipClientCache: options.unstable_skipClientCache || options.priority && !!true\n }).then(()=>false).catch(()=>false) : false;\n }),\n this.pageLoader[options.priority ? \"loadPage\" : \"prefetch\"](route)\n ]);\n }\n async fetchComponent(route) {\n const handleCancelled = getCancelledHandler({\n route,\n router: this\n });\n try {\n const componentResult = await this.pageLoader.loadPage(route);\n handleCancelled();\n return componentResult;\n } catch (err) {\n handleCancelled();\n throw err;\n }\n }\n _getData(fn) {\n let cancelled = false;\n const cancel = ()=>{\n cancelled = true;\n };\n this.clc = cancel;\n return fn().then((data)=>{\n if (cancel === this.clc) {\n this.clc = null;\n }\n if (cancelled) {\n const err = new Error(\"Loading initial props cancelled\");\n err.cancelled = true;\n throw err;\n }\n return data;\n });\n }\n _getFlightData(dataHref) {\n // Do not cache RSC flight response since it's not a static resource\n return fetchNextData({\n dataHref,\n isServerRender: true,\n parseJSON: false,\n inflightCache: this.sdc,\n persistCache: false,\n isPrefetch: false\n }).then((param)=>{\n let { text } = param;\n return {\n data: text\n };\n });\n }\n getInitialProps(Component, ctx) {\n const { Component: App } = this.components[\"/_app\"];\n const AppTree = this._wrapApp(App);\n ctx.AppTree = AppTree;\n return (0, _utils.loadGetInitialProps)(App, {\n AppTree,\n Component,\n router: this,\n ctx\n });\n }\n get route() {\n return this.state.route;\n }\n get pathname() {\n return this.state.pathname;\n }\n get query() {\n return this.state.query;\n }\n get asPath() {\n return this.state.asPath;\n }\n get locale() {\n return this.state.locale;\n }\n get isFallback() {\n return this.state.isFallback;\n }\n get isPreview() {\n return this.state.isPreview;\n }\n constructor(pathname, query, as, { initialProps, pageLoader, App, wrapApp, Component, err, subscription, isFallback, locale, locales, defaultLocale, domainLocales, isPreview }){\n // Server Data Cache (full data requests)\n this.sdc = {};\n // Server Background Cache (HEAD requests)\n this.sbc = {};\n this.isFirstPopStateEvent = true;\n this._key = createKey();\n this.onPopState = (e)=>{\n const { isFirstPopStateEvent } = this;\n this.isFirstPopStateEvent = false;\n const state = e.state;\n if (!state) {\n // We get state as undefined for two reasons.\n // 1. With older safari (< 8) and older chrome (< 34)\n // 2. When the URL changed with #\n //\n // In the both cases, we don't need to proceed and change the route.\n // (as it's already changed)\n // But we can simply replace the state with the new changes.\n // Actually, for (1) we don't need to nothing. But it's hard to detect that event.\n // So, doing the following for (1) does no harm.\n const { pathname, query } = this;\n this.changeState(\"replaceState\", (0, _formaturl.formatWithValidation)({\n pathname: (0, _addbasepath.addBasePath)(pathname),\n query\n }), (0, _utils.getURL)());\n return;\n }\n // __NA is used to identify if the history entry can be handled by the app-router.\n if (state.__NA) {\n window.location.reload();\n return;\n }\n if (!state.__N) {\n return;\n }\n // Safari fires popstateevent when reopening the browser.\n if (isFirstPopStateEvent && this.locale === state.options.locale && state.as === this.asPath) {\n return;\n }\n let forcedScroll;\n const { url, as, options, key } = state;\n if (false) {}\n this._key = key;\n const { pathname } = (0, _parserelativeurl.parseRelativeUrl)(url);\n // Make sure we don't re-render on initial load,\n // can be caused by navigating back from an external site\n if (this.isSsr && as === (0, _addbasepath.addBasePath)(this.asPath) && pathname === (0, _addbasepath.addBasePath)(this.pathname)) {\n return;\n }\n // If the downstream application returns falsy, return.\n // They will then be responsible for handling the event.\n if (this._bps && !this._bps(state)) {\n return;\n }\n this.change(\"replaceState\", url, as, Object.assign({}, options, {\n shallow: options.shallow && this._shallow,\n locale: options.locale || this.defaultLocale,\n // @ts-ignore internal value not exposed on types\n _h: 0\n }), forcedScroll);\n };\n // represents the current component key\n const route = (0, _removetrailingslash.removeTrailingSlash)(pathname);\n // set up the component cache (by route keys)\n this.components = {};\n // We should not keep the cache, if there's an error\n // Otherwise, this cause issues when when going back and\n // come again to the errored page.\n if (pathname !== \"/_error\") {\n this.components[route] = {\n Component,\n initial: true,\n props: initialProps,\n err,\n __N_SSG: initialProps && initialProps.__N_SSG,\n __N_SSP: initialProps && initialProps.__N_SSP\n };\n }\n this.components[\"/_app\"] = {\n Component: App,\n styleSheets: []\n };\n if (true) {\n const { BloomFilter } = __webpack_require__(/*! ../../lib/bloom-filter */ \"./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/bloom-filter.js\");\n const routerFilterSValue = {\"numItems\":10,\"errorRate\":0.0001,\"numBits\":192,\"numHashes\":14,\"bitArray\":[1,0,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,1]};\n const staticFilterData = routerFilterSValue ? routerFilterSValue : undefined;\n const routerFilterDValue = {\"numItems\":0,\"errorRate\":0.0001,\"numBits\":0,\"numHashes\":null,\"bitArray\":[]};\n const dynamicFilterData = routerFilterDValue ? routerFilterDValue : undefined;\n if (staticFilterData == null ? void 0 : staticFilterData.numHashes) {\n this._bfl_s = new BloomFilter(staticFilterData.numItems, staticFilterData.errorRate);\n this._bfl_s.import(staticFilterData);\n }\n if (dynamicFilterData == null ? void 0 : dynamicFilterData.numHashes) {\n this._bfl_d = new BloomFilter(dynamicFilterData.numItems, dynamicFilterData.errorRate);\n this._bfl_d.import(dynamicFilterData);\n }\n }\n // Backwards compat for Router.router.events\n // TODO: Should be remove the following major version as it was never documented\n this.events = Router.events;\n this.pageLoader = pageLoader;\n // if auto prerendered and dynamic route wait to update asPath\n // until after mount to prevent hydration mismatch\n const autoExportDynamic = (0, _isdynamic.isDynamicRoute)(pathname) && self.__NEXT_DATA__.autoExport;\n this.basePath = false || \"\";\n this.sub = subscription;\n this.clc = null;\n this._wrapApp = wrapApp;\n // make sure to ignore extra popState in safari on navigating\n // back from external site\n this.isSsr = true;\n this.isLocaleDomain = false;\n this.isReady = !!(self.__NEXT_DATA__.gssp || self.__NEXT_DATA__.gip || self.__NEXT_DATA__.isExperimentalCompile || self.__NEXT_DATA__.appGip && !self.__NEXT_DATA__.gsp || !autoExportDynamic && !self.location.search && !false);\n if (false) {}\n this.state = {\n route,\n pathname,\n query,\n asPath: autoExportDynamic ? pathname : as,\n isPreview: !!isPreview,\n locale: false ? 0 : undefined,\n isFallback\n };\n this._initialMatchesMiddlewarePromise = Promise.resolve(false);\n if (true) {\n // make sure \"as\" doesn't start with double slashes or else it can\n // throw an error as it's considered invalid\n if (!as.startsWith(\"//\")) {\n // in order for `e.state` to work on the `onpopstate` event\n // we have to register the initial route upon initialization\n const options = {\n locale\n };\n const asPath = (0, _utils.getURL)();\n this._initialMatchesMiddlewarePromise = matchesMiddleware({\n router: this,\n locale,\n asPath\n }).then((matches)=>{\n options._shouldResolveHref = as !== pathname;\n this.changeState(\"replaceState\", matches ? asPath : (0, _formaturl.formatWithValidation)({\n pathname: (0, _addbasepath.addBasePath)(pathname),\n query\n }), asPath, options);\n return matches;\n });\n }\n window.addEventListener(\"popstate\", this.onPopState);\n // enable custom scroll restoration handling when available\n // otherwise fallback to browser's default handling\n if (false) {}\n }\n }\n}\nRouter.events = (0, _mitt.default)(); //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvLnBucG0vbmV4dEAxNC4yLjMxX0BiYWJlbCtjb3JlQDcuMTIuM19yZWFjdC1kb21AMTguMy4xX3JlYWN0QDE4LjMuMV9fcmVhY3RAMTguMy4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLDRCQUE0Qjs7Ozs7Ozs7Ozs7OztJQW1tQlpBLFdBQVM7ZUFBVEE7OztlQWlES0M7O0lBM2pCQ0MsbUJBQWlCO2VBQWpCQTs7Ozs7aURBL0VjO3lDQUs3QjtvQ0FDZ0M7K0VBQ0M7aURBQ0o7aURBQ0E7MkVBQ25CO21DQUNrRDt1Q0FDcEM7OENBQ0U7c0ZBQ0w7MENBQ0k7d0NBQ0Y7dUNBQ087Z0RBQ0Y7dUNBQ1Q7dUNBQ0E7MENBQ0c7NENBQ0U7eUNBQ0g7eUNBQ0E7eUNBQ0E7d0NBQ0Q7aURBQ1M7b0RBQ0c7MkNBQ0g7d0NBQ1Q7bUNBQ0w7a0NBQ0Q7MkNBQ1M7Z0RBQ0s7QUFnQ25DLFNBQVNDO0lBQ1AsT0FBT0MsT0FBT0MsTUFBTSxDQUFDLElBQUlDLE1BQU0sb0JBQW9CO1FBQ2pEQyxXQUFXO0lBQ2I7QUFDRjtBQVNPLGVBQWVMLGtCQUNwQk0sT0FBa0M7SUFFbEMsTUFBTUMsV0FBVyxNQUFNQyxRQUFRQyxPQUFPLENBQ3BDSCxRQUFRSSxNQUFNLENBQUNDLFVBQVUsQ0FBQ0MsYUFBYTtJQUV6QyxJQUFJLENBQUNMLFVBQVUsT0FBTztJQUV0QixNQUFNLEVBQUVNLFVBQVVDLFVBQVUsRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxXQUFBQSxTQUFTLEVBQUNULFFBQVFVLE1BQU07SUFDekQsNkZBQTZGO0lBQzdGLE1BQU1DLFlBQVlDLENBQUFBLEdBQUFBLGFBQUFBLFdBQVcsRUFBQ0osY0FDMUJLLENBQUFBLEdBQUFBLGdCQUFBQSxjQUFjLEVBQUNMLGNBQ2ZBO0lBQ0osTUFBTU0sMEJBQTBCQyxDQUFBQSxHQUFBQSxhQUFBQSxXQUFXLEVBQ3pDQyxDQUFBQSxHQUFB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O29CQUVGLE9BQU8yRjtnQkFDVDtZQUNGO1lBRUFzQixPQUFPbVMsZ0JBQWdCLENBQUMsWUFBWSxJQUFJLENBQUN6QixVQUFVO1lBRW5ELDJEQUEyRDtZQUMzRCxtREFBbUQ7WUFDbkQsSUFBSWpVLEtBQXFDLEVBQUUsRUFJM0M7UUFDRjtJQUNGO0FBK25ERjtBQTkyRHFCakUsT0E2Q1o4TyxNQUFBQSxHQUFtQytLLENBQUFBLEdBQUFBLE1BQUFBLE9BQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyLnRzP2VkZmYiXSwibmFtZXMiOlsiY3JlYXRlS2V5IiwiUm91dGVyIiwibWF0Y2hlc01pZGRsZXdhcmUiLCJidWlsZENhbmNlbGxhdGlvbkVycm9yIiwiT2JqZWN0IiwiYXNzaWduIiwiRXJyb3IiLCJjYW5jZWxsZWQiLCJvcHRpb25zIiwibWF0Y2hlcnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJvdXRlciIsInBhZ2VMb2FkZXIiLCJnZXRNaWRkbGV3YXJlIiwicGF0aG5hbWUiLCJhc1BhdGhuYW1lIiwicGFyc2VQYXRoIiwiYXNQYXRoIiwiY2xlYW5lZEFzIiwiaGFzQmFzZVBhdGgiLCJyZW1vdmVCYXNlUGF0aCIsImFzV2l0aEJhc2VQYXRoQW5kTG9jYWxlIiwiYWRkQmFzZVBhdGgiLCJhZGRMb2NhbGUiLCJsb2NhbGUiLCJzb21lIiwibSIsIlJlZ0V4cCIsInJlZ2V4cCIsInRlc3QiLCJzdHJpcE9yaWdpbiIsInVybCIsIm9yaWdpbiIsImdldExvY2F0aW9uT3JpZ2luIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImxlbmd0aCIsInByZXBhcmVVcmxBcyIsImFzIiwicmVzb2x2ZWRIcmVmIiwicmVzb2x2ZWRBcyIsInJlc29sdmVIcmVmIiwiaHJlZldhc0Fic29sdXRlIiwiYXNXYXNBYnNvbHV0ZSIsInByZXBhcmVkVXJsIiwicHJlcGFyZWRBcyIsInJlc29sdmVEeW5hbWljUm91dGUiLCJwYWdlcyIsImNsZWFuUGF0aG5hbWUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZGVub3JtYWxpemVQYWdlUGF0aCIsImluY2x1ZGVzIiwicGFnZSIsImlzRHluYW1pY1JvdXRlIiwiZ2V0Um91dGVSZWdleCIsInJlIiwiZ2V0TWlkZGxld2FyZURhdGEiLCJzb3VyY2UiLCJyZXNwb25zZSIsIm5leHRDb25maWciLCJiYXNlUGF0aCIsImkxOG4iLCJsb2NhbGVzIiwidHJhaWxpbmdTbGFzaCIsIkJvb2xlYW4iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwicmV3cml0ZUhlYWRlciIsImhlYWRlcnMiLCJnZXQiLCJyZXdyaXRlVGFyZ2V0IiwibWF0Y2hlZFBhdGgiLCJfX05FWFRfRVhURVJOQUxfTUlERExFV0FSRV9SRVdSSVRFX1JFU09MVkUiLCJwYXJzZWRSZXdyaXRlVGFyZ2V0IiwicGFyc2VSZWxhdGl2ZVVybCIsInBhdGhuYW1lSW5mbyIsImdldE5leHRQYXRobmFtZUluZm8iLCJwYXJzZURhdGEiLCJmc1BhdGhuYW1lIiwiYWxsIiwiZ2V0UGFnZUxpc3QiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwidGhlbiIsInBhcmFtIiwiX19yZXdyaXRlcyIsInJld3JpdGVzIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsInBhcnNlZFNvdXJjZSIsIl9fTkVYVF9IQVNfUkVXUklURVMiLCJ1bmRlZmluZWQiLCJyZXN1bHQiLCJyZXNvbHZlUmV3cml0ZXMiLCJxdWVyeSIsInBhdGgiLCJtYXRjaGVkUGFnZSIsInBhcnNlZEFzIiwicmVzb2x2ZWRQYXRobmFtZSIsIm1hdGNoZXMiLCJnZXRSb3V0ZU1hdGNoZXIiLCJ0eXBlIiwic3JjIiwiZm9ybWF0TmV4dFBhdGhuYW1lSW5mbyIsImRlZmF1bHRMb2NhbGUiLCJidWlsZElkIiwiZGVzdGluYXRpb24iLCJoYXNoIiwicmVkaXJlY3RUYXJnZXQiLCJuZXdBcyIsIm5ld1VybCIsIndpdGhNaWRkbGV3YXJlRWZmZWN0cyIsImZldGNoRGF0YSIsImRhdGEiLCJlZmZlY3QiLCJkYXRhSHJlZiIsImpzb24iLCJ0ZXh0IiwiY2FjaGVLZXkiLCJtYW51YWxTY3JvbGxSZXN0b3JhdGlvbiIsIl9fTkVYVF9TQ1JPTExfUkVTVE9SQVRJT04iLCJ3aW5kb3ciLCJoaXN0b3J5IiwidiIsInNlc3Npb25TdG9yYWdlIiwic2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJuIiwiU1NHX0RBVEFfTk9UX0ZPVU5EIiwiU3ltYm9sIiwiZmV0Y2hSZXRyeSIsImF0dGVtcHRzIiwiZmV0Y2giLCJjcmVkZW50aWFscyIsIm1ldGhvZCIsIm9rIiwic3RhdHVzIiwidHJ5VG9QYXJzZUFzSlNPTiIsIkpTT04iLCJwYXJzZSIsImVycm9yIiwiZmV0Y2hOZXh0RGF0YSIsImluZmxpZ2h0Q2FjaGUiLCJpc1ByZWZldGNoIiwiaGFzTWlkZGxld2FyZSIsImlzU2VydmVyUmVuZGVyIiwicGFyc2VKU09OIiwicGVyc2lzdENhY2hlIiwiaXNCYWNrZ3JvdW5kIiwidW5zdGFibGVfc2tpcENsaWVudENhY2hlIiwiaHJlZiIsIlVSTCIsImxvY2F0aW9uIiwiZ2V0RGF0YSIsInBhcmFtcyIsInB1cnBvc2UiLCJub3RGb3VuZCIsIm1hcmtBc3NldEVycm9yIiwiY2F0Y2giLCJlcnIiLCJtZXNzYWdlIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic2xpY2UiLCJoYW5kbGVIYXJkTmF2aWdhdGlvbiIsImdldENhbmNlbGxlZEhhbmRsZXIiLCJyb3V0ZSIsImNhbmNlbCIsImNsYyIsImhhbmRsZUNhbmNlbGxlZCIsInJlbG9hZCIsImJhY2siLCJmb3J3YXJkIiwicHVzaCIsIl9rZXkiLCJzdHJpbmdpZnkiLCJ4Iiwic2VsZiIsInBhZ2VYT2Zmc2V0IiwieSIsInBhZ2VZT2Zmc2V0IiwiZSIsImNoYW5nZSIsInJlcGxhY2UiLCJfYmZsIiwic2tpcE5hdmlnYXRlIiwiX19ORVhUX0NMSUVOVF9ST1VURVJfRklMVEVSX0VOQUJMRUQiLCJtYXRjaGVzQmZsU3RhdGljIiwibWF0Y2hlc0JmbER5bmFtaWMiLCJjdXJBcyIsImFzTm9TbGFzaCIsImFzTm9TbGFzaExvY2FsZSIsIl90aGlzX19iZmxfcyIsIl90aGlzX19iZmxfczEiLCJfYmZsX3MiLCJjb250YWlucyIsIm5vcm1hbGl6ZWRBUyIsImN1ckFzUGFydHMiLCJzcGxpdCIsImkiLCJfdGhpc19fYmZsX2QiLCJjdXJyZW50UGFydCIsImpvaW4iLCJfYmZsX2QiLCJmb3JjZWRTY3JvbGwiLCJfdGhpc19jb21wb25lbnRzX3BhdGhuYW1lIiwiaXNMb2NhbFVSTCIsImlzUXVlcnlVcGRhdGluZyIsIl9oIiwic2hhbGxvdyIsInNob3VsZFJlc29sdmVIcmVmIiwiX3Nob3VsZFJlc29sdmVIcmVmIiwibmV4dFN0YXRlIiwic3RhdGUiLCJyZWFkeVN0YXRlQ2hhbmdlIiwiaXNSZWFkeSIsImlzU3NyIiwicHJldkxvY2FsZSIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJmb3JtYXRXaXRoVmFsaWRhdGlvbiIsImRpZE5hdmlnYXRlIiwiX3RoaXNfbG9jYWxlcyIsImRldGVjdGVkRG9tYWluIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwiZG9tYWluTG9jYWxlcyIsImlzTG9jYWxlRG9tYWluIiwiaG9zdG5hbWUiLCJkb21haW4iLCJhc05vQmFzZVBhdGgiLCJodHRwIiwiU1QiLCJwZXJmb3JtYW5jZSIsIm1hcmsiLCJzY3JvbGwiLCJyb3V0ZVByb3BzIiwiX2luRmxpZ2h0Um91dGUiLCJldmVudHMiLCJlbWl0IiwicmVtb3ZlTG9jYWxlIiwibG9jYWxlQ2hhbmdlIiwib25seUFIYXNoQ2hhbmdlIiwiY2hhbmdlU3RhdGUiLCJzY3JvbGxUb0hhc2giLCJzZXQiLCJjb21wb25lbnRzIiwiaXNFcnJvciIsInBhcnNlZCIsInVybElzTmV3IiwicGFyc2VkQXNQYXRobmFtZSIsIl9fYXBwUm91dGVyIiwiaXNNaWRkbGV3YXJlUmV3cml0ZSIsImlzTWlkZGxld2FyZU1hdGNoIiwicmV3cml0ZXNSZXN1bHQiLCJwIiwiZXh0ZXJuYWxEZXN0Iiwicm91dGVNYXRjaCIsInJvdXRlUmVnZXgiLCJzaG91bGRJbnRlcnBvbGF0ZSIsImludGVycG9sYXRlZEFzIiwiaW50ZXJwb2xhdGVBcyIsIm1pc3NpbmdQYXJhbXMiLCJrZXlzIiwiZ3JvdXBzIiwiZmlsdGVyIiwib3B0aW9uYWwiLCJjb25zb2xlIiwid2FybiIsIm9taXQiLCJpc0Vycm9yUm91dGUiLCJyb3V0ZUluZm8iLCJnZXRSb3V0ZUluZm8iLCJpc1ByZXZpZXciLCJpc0ZhbGxiYWNrIiwiY2xlYW5lZFBhcnNlZFBhdGhuYW1lIiwiZm9yRWFjaCIsImtleSIsInByZWZpeGVkQXMiLCJyZXdyaXRlQXMiLCJsb2NhbGVSZXN1bHQiLCJjdXJSb3V0ZU1hdGNoIiwiY29tcG9uZW50IiwiQ29tcG9uZW50IiwidW5zdGFibGVfc2NyaXB0TG9hZGVyIiwic2NyaXB0cyIsImNvbmNhdCIsInNjcmlwdCIsImhhbmRsZUNsaWVudFNjcmlwdExvYWQiLCJwcm9wcyIsIl9fTl9TU0ciLCJfX05fU1NQIiwicGFnZVByb3BzIiwiX19OX1JFRElSRUNUIiwiX19OX1JFRElSRUNUX0JBU0VfUEFUSCIsInBhcnNlZEhyZWYiLCJfX05fUFJFVklFVyIsIm5vdEZvdW5kUm91dGUiLCJmZXRjaENvbXBvbmVudCIsIl8iLCJpc05vdEZvdW5kIiwiX19ORVhUX0RBVEFfXyIsInN0YXR1c0NvZGUiLCJpc1ZhbGlkU2hhbGxvd1JvdXRlIiwic2hvdWxkU2Nyb2xsIiwicmVzZXRTY3JvbGwiLCJ1cGNvbWluZ1Njcm9sbFN0YXRlIiwidXBjb21pbmdSb3V0ZXJTdGF0ZSIsImNhblNraXBVcGRhdGluZyIsImNvbXBhcmVSb3V0ZXJTdGF0ZXMiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImxhbmciLCJoYXNoUmVnZXgiLCJnZXRVUkwiLCJfc2hhbGxvdyIsIl9fTiIsImhhbmRsZVJvdXRlSW5mb0Vycm9yIiwibG9hZEVycm9yRmFpbCIsImlzQXNzZXRFcnJvciIsInN0eWxlU2hlZXRzIiwiZ2V0SW5pdGlhbFByb3BzIiwiZ2lwRXJyIiwicm91dGVJbmZvRXJyIiwicmVxdWVzdGVkUm91dGUiLCJleGlzdGluZ0luZm8iLCJjYWNoZWRSb3V0ZUluZm8iLCJmZXRjaE5leHREYXRhUGFyYW1zIiwiZ2V0RGF0YUhyZWYiLCJza2lwSW50ZXJwb2xhdGlvbiIsInNiYyIsInNkYyIsInJlc29sdmVkUm91dGUiLCJpc0FQSVJvdXRlIiwicmVzIiwibW9kIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwicmVxdWlyZSIsIndhc0JhaWxlZFByZWZldGNoIiwic2hvdWxkRmV0Y2hEYXRhIiwiX2dldERhdGEiLCJmZXRjaGVkIiwiZ2V0UHJvcGVyRXJyb3IiLCJzdWIiLCJiZWZvcmVQb3BTdGF0ZSIsImNiIiwiX2JwcyIsIm9sZFVybE5vSGFzaCIsIm9sZEhhc2giLCJuZXdVcmxOb0hhc2giLCJuZXdIYXNoIiwiaGFuZGxlU21vb3RoU2Nyb2xsIiwic2Nyb2xsVG8iLCJyYXdIYXNoIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWRFbCIsImdldEVsZW1lbnRCeUlkIiwic2Nyb2xsSW50b1ZpZXciLCJuYW1lRWwiLCJnZXRFbGVtZW50c0J5TmFtZSIsIm9ubHlIYXNoQ2hhbmdlIiwicHJlZmV0Y2giLCJpc0JvdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInVybFBhdGhuYW1lIiwib3JpZ2luYWxQYXRobmFtZSIsIl9fTkVYVF9NSURETEVXQVJFX1BSRUZFVENIIiwiX2lzU3NnIiwiaXNTc2ciLCJwcmlvcml0eSIsIl9fTkVYVF9PUFRJTUlTVElDX0NMSUVOVF9DQUNIRSIsImNvbXBvbmVudFJlc3VsdCIsImxvYWRQYWdlIiwiZm4iLCJfZ2V0RmxpZ2h0RGF0YSIsImN0eCIsIkFwcCIsIkFwcFRyZWUiLCJfd3JhcEFwcCIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJjb25zdHJ1Y3RvciIsImluaXRpYWxQcm9wcyIsIndyYXBBcHAiLCJzdWJzY3JpcHRpb24iLCJpc0ZpcnN0UG9wU3RhdGVFdmVudCIsIm9uUG9wU3RhdGUiLCJfX05BIiwiZ2V0SXRlbSIsImluaXRpYWwiLCJCbG9vbUZpbHRlciIsInJvdXRlckZpbHRlclNWYWx1ZSIsIl9fTkVYVF9DTElFTlRfUk9VVEVSX1NfRklMVEVSIiwic3RhdGljRmlsdGVyRGF0YSIsInJvdXRlckZpbHRlckRWYWx1ZSIsIl9fTkVYVF9DTElFTlRfUk9VVEVSX0RfRklMVEVSIiwiZHluYW1pY0ZpbHRlckRhdGEiLCJudW1IYXNoZXMiLCJudW1JdGVtcyIsImVycm9yUmF0ZSIsImltcG9ydCIsImF1dG9FeHBvcnREeW5hbWljIiwiYXV0b0V4cG9ydCIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJnc3NwIiwiZ2lwIiwiaXNFeHBlcmltZW50YWxDb21waWxlIiwiYXBwR2lwIiwiZ3NwIiwic2VhcmNoIiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJhZGRFdmVudExpc3RlbmVyIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJtaXR0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/.pnpm/next@14.2.31_@babel+core@7.12.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/shared/lib/router/router.js\n"));
|
||
|
||
/***/ })
|
||
|
||
}); |