{"version":3,"file":"static/js/main.js","mappings":"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","sources":["../node_modules/extend/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/inline-style-parser/index.js","../node_modules/js-guid/dist/guid.constants.js","../node_modules/js-guid/dist/guid.helpers.js","../node_modules/js-guid/dist/guid.js","../node_modules/js-guid/dist/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-ga4/dist/format.js","../node_modules/react-ga4/dist/ga4.js","../node_modules/react-ga4/dist/gtag.js","../node_modules/react-ga4/dist/index.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/style-to-object/src/index.ts","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/react-redux/src/utils/react.ts","../node_modules/react-redux/src/components/Context.ts","../node_modules/react-redux/src/utils/useSyncExternalStore.ts","../node_modules/react-redux/src/hooks/useReduxContext.ts","../node_modules/react-redux/src/hooks/useSelector.ts","../node_modules/react-redux/src/utils/react-is.ts","../node_modules/react-redux/src/utils/batch.ts","../node_modules/react-redux/src/utils/Subscription.ts","../node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts","../node_modules/react-redux/src/utils/hoistStatics.ts","../node_modules/react-redux/src/components/Provider.tsx","../node_modules/react-redux/src/hooks/useStore.ts","../node_modules/react-redux/src/hooks/useDispatch.ts","../node_modules/react-redux/src/index.ts","../node_modules/react-redux/src/components/connect.tsx","components/icons/ArrowRightIcon.jsx","components/icons/CopeIcon.jsx","components/icons/DislikeIcon.jsx","components/icons/LikeIcon.jsx","components/icons/RefreshIcon.jsx","components/icons/TickIcon.jsx","util/util.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","util/tracking.js","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/env.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/errors.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/common.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/plugins.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/scope.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/finalize.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/proxy.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/immerClass.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/current.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/immer.ts","../node_modules/reselect/src/utils.ts","../node_modules/reselect/src/autotrackMemoize/proxy.ts","../node_modules/reselect/src/weakMapMemoize.ts","../node_modules/reselect/src/createSelectorCreator.ts","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/redux/src/compose.ts","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/redux/src/utils/isAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","state/sources/sourcesSlice.js","components/chat-dialog/ChatBubbleAction.jsx","components/icons/UserAvatarIcon.jsx","components/icons/LinkIcon.jsx","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/handle/break.js","../node_modules/mdast-util-to-markdown/lib/handle/code.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js","../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js","../node_modules/mdast-util-to-markdown/lib/handle/html.js","../node_modules/mdast-util-to-markdown/lib/handle/image.js","../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js","../node_modules/mdast-util-to-markdown/lib/handle/link.js","../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule.js","../node_modules/mdast-util-phrasing/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/strong.js","../node_modules/mdast-util-to-markdown/lib/util/check-strong.js","../node_modules/mdast-util-to-markdown/lib/handle/index.js","../node_modules/mdast-util-to-markdown/lib/util/check-fence.js","../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js","../node_modules/longest-streak/index.js","../node_modules/mdast-util-to-markdown/lib/handle/definition.js","../node_modules/mdast-util-to-markdown/lib/handle/heading.js","../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js","../node_modules/mdast-util-to-markdown/lib/handle/list.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js","../node_modules/mdast-util-to-markdown/lib/handle/root.js","../node_modules/mdast-util-to-markdown/lib/handle/text.js","../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js","../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/remark-gfm/lib/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","components/chat-dialog/ChatBubble.jsx","components/icons/ArrowLeftIcon.jsx","components/Sources.jsx","state/ui/uiSlice.js","components/icons/SendIcon.jsx","components/ChatInput.jsx","components/icons/ArrowUpIcon.jsx","components/ChatTrending.jsx","components/ChatDisclaimer.jsx","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","components/icons/CloseIcon.jsx","components/Header.jsx","App.jsx","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","state/store.js","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux/src/applyMiddleware.ts","index.js"],"sourcesContent":["'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.VALUE_REQUIRED = exports.UNSUPPORTED_TYPE = exports.INVALID_GUID = void 0;\r\n// Constant message for the GUID class.\r\nconst INVALID_GUID = 'Invalid Guid value! Please specify a valid value!';\r\nexports.INVALID_GUID = INVALID_GUID;\r\nconst VALUE_REQUIRED = 'The parameter value required!';\r\nexports.VALUE_REQUIRED = VALUE_REQUIRED;\r\nconst UNSUPPORTED_TYPE = 'UnSupported type! please specify one of the following: [Guid | string | Uint8Array]';\r\nexports.UNSUPPORTED_TYPE = UNSUPPORTED_TYPE;\r\n","\"use strict\";\r\n/* eslint-disable no-bitwise */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.GenerateGuidV4 = exports.isUint8ArrayValidGuid = exports.isStringValidGuid = exports.uint8ArrayToString = exports.stringToUint8Array = exports.ARRAY_LENGTH = void 0;\r\nexports.ARRAY_LENGTH = 16;\r\nconst BYTE_ORDER = [3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15];\r\n/**\r\n * Regex to validate the given GUID accept all the UUIDs version.\r\n */\r\nconst regexValidator = new RegExp('^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$', 'i');\r\n/**\r\n * Convert the given number to a Hex format.\r\n * @param value The number to be converted\r\n */\r\nfunction convertNumberToHex(value) {\r\n let hex = value <= 0xf ? '0' : '';\r\n hex += value.toString(exports.ARRAY_LENGTH);\r\n return hex;\r\n}\r\n/**\r\n * Convert the given {string} to a {Uint8Array} value.\r\n * @param value String value of the Guid.\r\n */\r\nfunction stringToUint8Array(value) {\r\n // Strip any separators and un-wanted chars.\r\n const regExp = new RegExp('[{}()-]', 'g');\r\n const guid = value.replace(regExp, '');\r\n const bytes = [];\r\n for (let i = 0; i < exports.ARRAY_LENGTH; i++) {\r\n const pos = BYTE_ORDER[i];\r\n const b1 = guid.charAt(pos * 2);\r\n const b2 = guid.charAt(pos * 2 + 1);\r\n const charAt = unescape(`%${b1}${b2}`).charCodeAt(0);\r\n bytes.push(charAt);\r\n }\r\n return new Uint8Array(bytes);\r\n}\r\nexports.stringToUint8Array = stringToUint8Array;\r\n/**\r\n * Convert the given {Uint8Array} to a {string} value.\r\n *\r\n * @param value Byte Array value of the Guid.\r\n */\r\nfunction uint8ArrayToString(value) {\r\n let guid = '';\r\n for (let i = 0; i < exports.ARRAY_LENGTH; i++) {\r\n // Decide if we need to add the Hyphen {-} in the Guid.\r\n guid += i === 4 || i === 6 || i === 8 || i === 10 ? '-' : '';\r\n const pos = BYTE_ORDER[i];\r\n guid += convertNumberToHex(value[pos]);\r\n }\r\n return guid;\r\n}\r\nexports.uint8ArrayToString = uint8ArrayToString;\r\n/**\r\n * Validate that the given value is a valid GUID.\r\n * @param guid The value to be validated.\r\n */\r\nfunction isStringValidGuid(guid) {\r\n if (!guid) {\r\n return false;\r\n }\r\n return regexValidator.test(guid);\r\n}\r\nexports.isStringValidGuid = isStringValidGuid;\r\n/**\r\n * Validate that the given value is a valid GUID.\r\n * @param guid The value to be validated.\r\n */\r\nfunction isUint8ArrayValidGuid(guid) {\r\n const strGuid = uint8ArrayToString(guid);\r\n return guid && regexValidator.test(strGuid);\r\n}\r\nexports.isUint8ArrayValidGuid = isUint8ArrayValidGuid;\r\n/**\r\n * Generate a random v4 GUID.\r\n */\r\nfunction GenerateGuidV4() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (char) {\r\n const random = (Math.random() * 16) | 0;\r\n const v = char === 'x' ? random : (random & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}\r\nexports.GenerateGuidV4 = GenerateGuidV4;\r\n","\"use strict\";\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-plusplus */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Guid = void 0;\r\nconst guid_constants_1 = require(\"./guid.constants\");\r\nconst guid_helpers_1 = require(\"./guid.helpers\");\r\nclass Guid {\r\n /**\r\n * Empty string Guid value: '00000000-0000-0000-0000-000000000000'.\r\n */\r\n static EMPTY = '00000000-0000-0000-0000-000000000000';\r\n /**\r\n * Holds a Uint8Array of 16 elements containing the GUID values.\r\n */\r\n BytesGuid = new Uint8Array(16);\r\n /**\r\n * Holds the string value of the GUID.\r\n */\r\n StringGuid = '';\r\n /**\r\n * Create a new instance of the Guid with the given value,\r\n * or generate a new Guid if no value was given.\r\n * @param value The target value if already exists, leave it empty for a new value.\r\n */\r\n constructor(value) {\r\n this.BytesGuid = new Uint8Array(16);\r\n this.StringGuid = '';\r\n if (!value) {\r\n this.StringGuid = (0, guid_helpers_1.GenerateGuidV4)();\r\n this.BytesGuid = (0, guid_helpers_1.stringToUint8Array)(this.StringGuid);\r\n return;\r\n }\r\n if (typeof value === 'string') {\r\n if (!Guid.isValid(value)) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n this.StringGuid = value;\r\n this.BytesGuid = (0, guid_helpers_1.stringToUint8Array)(this.StringGuid);\r\n return;\r\n }\r\n if (typeof value === 'object' && value instanceof Uint8Array) {\r\n if (!Guid.isValid(value)) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n this.BytesGuid = value;\r\n this.StringGuid = (0, guid_helpers_1.uint8ArrayToString)(value);\r\n return;\r\n }\r\n throw new Error(guid_constants_1.UNSUPPORTED_TYPE);\r\n }\r\n toString() {\r\n return this.StringGuid;\r\n }\r\n toByteArray() {\r\n return this.BytesGuid;\r\n }\r\n equals(value) {\r\n if (!value) {\r\n throw new Error(guid_constants_1.VALUE_REQUIRED);\r\n }\r\n if (typeof value === 'string') {\r\n if (!(0, guid_helpers_1.isStringValidGuid)(value)) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n return this.StringGuid === value;\r\n }\r\n if (typeof value !== 'object') {\r\n throw new Error(guid_constants_1.UNSUPPORTED_TYPE);\r\n }\r\n if (value instanceof Uint8Array) {\r\n if (!(0, guid_helpers_1.isUint8ArrayValidGuid)(value)) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n return this.StringGuid === (0, guid_helpers_1.uint8ArrayToString)(value);\r\n }\r\n if (value instanceof Guid) {\r\n return this.StringGuid === value.toString();\r\n }\r\n return true;\r\n }\r\n isEmpty() {\r\n return this.StringGuid === Guid.EMPTY;\r\n }\r\n /**\r\n * Parse the given value into the opposite type.\r\n * Example : if value is string the function return a {Uint8Array of 16 elements},\r\n * otherwise it return a {string} if the value is a Uint8Array.\r\n */\r\n static parse(value) {\r\n if (!Guid.isValid(value)) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n if (typeof value === 'object' && value instanceof Uint8Array) {\r\n return (0, guid_helpers_1.uint8ArrayToString)(value);\r\n }\r\n // At this point we're sure that the value is string.\r\n return (0, guid_helpers_1.stringToUint8Array)(value);\r\n }\r\n /**\r\n * Generate a new v4 Guid and return a new instance of the Guid.\r\n */\r\n static newGuid() {\r\n return new Guid((0, guid_helpers_1.GenerateGuidV4)());\r\n }\r\n /**\r\n * Checks if the given value is a valid GUID.\r\n * @param value The given guid that need to be validated.\r\n */\r\n static isValid(value) {\r\n if (!value) {\r\n throw new Error(guid_constants_1.VALUE_REQUIRED);\r\n }\r\n if (typeof value === 'string') {\r\n return (0, guid_helpers_1.isStringValidGuid)(value);\r\n }\r\n if (typeof value === 'object' && value instanceof Uint8Array) {\r\n if (value.length !== guid_helpers_1.ARRAY_LENGTH) {\r\n throw new Error(guid_constants_1.INVALID_GUID);\r\n }\r\n return (0, guid_helpers_1.isUint8ArrayValidGuid)(value);\r\n }\r\n throw new Error(guid_constants_1.UNSUPPORTED_TYPE);\r\n }\r\n}\r\nexports.Guid = Guid;\r\n","\"use strict\";\r\n/**\r\n * Determine the methods and functions to be exported.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Guid = void 0;\r\nvar guid_1 = require(\"./guid\");\r\nObject.defineProperty(exports, \"Guid\", { enumerable: true, get: function () { return guid_1.Guid; } });\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n if (mightBeEmail(string)) {\n console.warn(\"This arg looks like an email address, redacting.\");\n return redacted;\n }\n return string;\n}\nfunction format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var _str = s || \"\";\n if (titleCase) {\n _str = toTitleCase(s);\n }\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n return _str;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n _excluded2 = [\"title\", \"location\"],\n _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n function GA4() {\n var _this = this;\n _classCallCheck(this, GA4);\n _defineProperty(this, \"reset\", function () {\n _this.isInitialized = false;\n _this._testMode = false;\n _this._currentMeasurementId;\n _this._hasLoadedGA = false;\n _this._isQueuing = false;\n _this._queueGtag = [];\n });\n _defineProperty(this, \"_gtag\", function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!_this._testMode) {\n if (_this._isQueuing) {\n _this._queueGtag.push(args);\n } else {\n _gtag[\"default\"].apply(void 0, args);\n }\n } else {\n _this._queueGtag.push(args);\n }\n });\n _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n var gtagUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"https://www.googletagmanager.com/gtag/js\";\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n if (!_this._hasLoadedGA) {\n // Global Site Tag (gtag.js) - Google Analytics\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = \"\".concat(gtagUrl, \"?id=\").concat(GA_MEASUREMENT_ID);\n if (nonce) {\n script.setAttribute(\"nonce\", nonce);\n }\n document.body.appendChild(script);\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n _this._hasLoadedGA = true;\n }\n });\n _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n if (!gaOptions) {\n return;\n }\n var mapFields = {\n // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n cookieUpdate: \"cookie_update\",\n cookieExpires: \"cookie_expires\",\n cookieDomain: \"cookie_domain\",\n cookieFlags: \"cookie_flags\",\n // must be in set method?\n userId: \"user_id\",\n clientId: \"client_id\",\n anonymizeIp: \"anonymize_ip\",\n // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n contentGroup1: \"content_group1\",\n contentGroup2: \"content_group2\",\n contentGroup3: \"content_group3\",\n contentGroup4: \"content_group4\",\n contentGroup5: \"content_group5\",\n // https://support.google.com/analytics/answer/9050852?hl=en\n allowAdFeatures: \"allow_google_signals\",\n allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n nonInteraction: \"non_interaction\",\n page: \"page_path\",\n hitCallback: \"event_callback\"\n };\n var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (mapFields[key]) {\n prev[mapFields[key]] = value;\n } else {\n prev[key] = value;\n }\n return prev;\n }, {});\n return gtagOptions;\n });\n _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!GA_MEASUREMENT_ID) {\n throw new Error(\"Require GA_MEASUREMENT_ID\");\n }\n var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n trackingId: GA_MEASUREMENT_ID\n }] : GA_MEASUREMENT_ID;\n _this._currentMeasurementId = initConfigs[0].trackingId;\n var gaOptions = options.gaOptions,\n gtagOptions = options.gtagOptions,\n nonce = options.nonce,\n _options$testMode = options.testMode,\n testMode = _options$testMode === void 0 ? false : _options$testMode,\n gtagUrl = options.gtagUrl;\n _this._testMode = testMode;\n if (!testMode) {\n _this._loadGA(_this._currentMeasurementId, nonce, gtagUrl);\n }\n if (!_this.isInitialized) {\n _this._gtag(\"js\", new Date());\n initConfigs.forEach(function (config) {\n var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n if (Object.keys(mergedGtagOptions).length) {\n _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n } else {\n _this._gtag(\"config\", config.trackingId);\n }\n });\n }\n _this.isInitialized = true;\n if (!testMode) {\n var queues = _toConsumableArray(_this._queueGtag);\n _this._queueGtag = [];\n _this._isQueuing = false;\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n if (queue[0] === \"get\") {\n _this._isQueuing = true;\n }\n }\n }\n });\n _defineProperty(this, \"set\", function (fieldsObject) {\n if (!fieldsObject) {\n console.warn(\"`fieldsObject` is required in .set()\");\n return;\n }\n if (_typeof(fieldsObject) !== \"object\") {\n console.warn(\"Expected `fieldsObject` arg to be an Object\");\n return;\n }\n if (Object.keys(fieldsObject).length === 0) {\n console.warn(\"empty `fieldsObject` given to .set()\");\n }\n _this._gaCommand(\"set\", fieldsObject);\n });\n _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n event_category: eventCategory,\n event_label: eventLabel,\n value: eventValue\n }, fieldsObject && {\n non_interaction: fieldsObject.nonInteraction\n }), _this._toGtagOptions(fieldsObject)));\n });\n _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$ = args[0],\n eventCategory = _args$.eventCategory,\n eventAction = _args$.eventAction,\n eventLabel = _args$.eventLabel,\n eventValue = _args$.eventValue,\n hitType = _args$.hitType,\n rest = _objectWithoutProperties(_args$, _excluded);\n _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n _this._gtag(\"event\", \"timing_complete\", {\n name: timingVar,\n value: timingValue,\n event_category: timingCategory,\n event_label: timingLabel\n });\n });\n _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n if (fieldsObject && Object.keys(fieldsObject).length) {\n var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n title = _this$_toGtagOptions.title,\n location = _this$_toGtagOptions.location,\n rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n page_path: page\n }), title && {\n page_title: title\n }), location && {\n page_location: location\n }), rest));\n } else if (page) {\n _this._gtag(\"event\", \"page_view\", {\n page_path: page\n });\n } else {\n _this._gtag(\"event\", \"page_view\");\n }\n });\n _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$2 = args[0],\n page = _args$2.page,\n hitType = _args$2.hitType,\n rest = _objectWithoutProperties(_args$2, _excluded3);\n _this._gaCommandSendPageview(page, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSend\", function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n switch (hitType) {\n case \"event\":\n _this._gaCommandSendEventParameters.apply(_this, args);\n break;\n case \"pageview\":\n _this._gaCommandSendPageviewParameters.apply(_this, args);\n break;\n case \"timing\":\n _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n break;\n case \"screenview\":\n case \"transaction\":\n case \"item\":\n case \"social\":\n case \"exception\":\n console.warn(\"Unsupported send command: \".concat(hitType));\n break;\n default:\n console.warn(\"Send command doesn't exist: \".concat(hitType));\n }\n });\n _defineProperty(this, \"_gaCommandSet\", function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n if (typeof args[0] === \"string\") {\n args[0] = _defineProperty({}, args[0], args[1]);\n }\n _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n });\n _defineProperty(this, \"_gaCommand\", function (command) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n switch (command) {\n case \"send\":\n _this._gaCommandSend.apply(_this, args);\n break;\n case \"set\":\n _this._gaCommandSet.apply(_this, args);\n break;\n default:\n console.warn(\"Command doesn't exist: \".concat(command));\n }\n });\n _defineProperty(this, \"ga\", function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommand.apply(_this, args);\n } else {\n var readyCallback = args[0];\n _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n _this._isQueuing = false;\n var queues = _this._queueGtag;\n readyCallback({\n get: function get(property) {\n return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n }\n });\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n }\n });\n _this._isQueuing = true;\n }\n return _this.ga;\n });\n _defineProperty(this, \"event\", function (optionsOrName, params) {\n if (typeof optionsOrName === \"string\") {\n _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n } else {\n var action = optionsOrName.action,\n category = optionsOrName.category,\n label = optionsOrName.label,\n value = optionsOrName.value,\n nonInteraction = optionsOrName.nonInteraction,\n transport = optionsOrName.transport;\n if (!category || !action) {\n console.warn(\"args.category AND args.action are required in event()\");\n return;\n }\n\n // Required Fields\n var fieldObject = {\n hitType: \"event\",\n eventCategory: (0, _format[\"default\"])(category),\n eventAction: (0, _format[\"default\"])(action)\n };\n\n // Optional Fields\n if (label) {\n fieldObject.eventLabel = (0, _format[\"default\"])(label);\n }\n if (typeof value !== \"undefined\") {\n if (typeof value !== \"number\") {\n console.warn(\"Expected `args.value` arg to be a Number.\");\n } else {\n fieldObject.eventValue = value;\n }\n }\n if (typeof nonInteraction !== \"undefined\") {\n if (typeof nonInteraction !== \"boolean\") {\n console.warn(\"`args.nonInteraction` must be a boolean.\");\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n if (typeof transport !== \"undefined\") {\n if (typeof transport !== \"string\") {\n console.warn(\"`args.transport` must be a string.\");\n } else {\n if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n }\n fieldObject.transport = transport;\n }\n }\n _this._gaCommand(\"send\", fieldObject);\n }\n });\n _defineProperty(this, \"send\", function (fieldObject) {\n _this._gaCommand(\"send\", fieldObject);\n });\n this.reset();\n }\n _createClass(GA4, [{\n key: \"gtag\",\n value: function gtag() {\n this._gtag.apply(this, arguments);\n }\n }]);\n return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof window !== \"undefined\") {\n var _window;\n if (typeof window.gtag === \"undefined\") {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n }\n (_window = window).gtag.apply(_window, args);\n }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import parse from 'inline-style-parser';\nimport type { Declaration } from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var g=require(\"react\");function n(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var p=\"function\"===typeof Object.is?Object.is:n,q=g.useSyncExternalStore,r=g.useRef,t=g.useEffect,u=g.useMemo,v=g.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,h){var c=r(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=u(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==h&&f.hasValue){var b=f.value;if(h(b,a))return k=b}return k=a}b=k;if(p(d,a))return b;var e=l(a);if(void 0!==h&&h(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,h]);var d=q(a,c[0],c[1]);\nt(function(){f.hasValue=!0;f.value=d},[d]);v(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import * as ReactOriginal from 'react'\r\nimport type * as ReactNamespace from 'react'\r\n\r\nexport const React: typeof ReactNamespace =\r\n // prettier-ignore\r\n // @ts-ignore\r\n 'default' in ReactOriginal ? ReactOriginal['default'] : ReactOriginal as any\r\n","import type { Context } from 'react'\r\nimport { React } from '../utils/react'\r\nimport type { Action, Store, UnknownAction } from 'redux'\r\nimport type { Subscription } from '../utils/Subscription'\r\nimport type { ProviderProps } from './Provider'\r\n\r\nexport interface ReactReduxContextValue<\r\n SS = any,\r\n A extends Action = UnknownAction\r\n> extends Pick {\r\n store: Store\r\n subscription: Subscription\r\n getServerState?: () => SS\r\n}\r\n\r\nconst ContextKey = Symbol.for(`react-redux-context`)\r\nconst gT: {\r\n [ContextKey]?: Map<\r\n typeof React.createContext,\r\n Context\r\n >\r\n} = (\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ {}\r\n) as any\r\n\r\nfunction getContext(): Context {\r\n if (!React.createContext) return {} as any\r\n\r\n const contextMap = (gT[ContextKey] ??= new Map<\r\n typeof React.createContext,\r\n Context\r\n >())\r\n let realContext = contextMap.get(React.createContext)\r\n if (!realContext) {\r\n realContext = React.createContext(\r\n null as any\r\n )\r\n if (process.env.NODE_ENV !== 'production') {\r\n realContext.displayName = 'ReactRedux'\r\n }\r\n contextMap.set(React.createContext, realContext)\r\n }\r\n return realContext\r\n}\r\n\r\nexport const ReactReduxContext = /*#__PURE__*/ getContext()\r\n\r\nexport type ReactReduxContextInstance = typeof ReactReduxContext\r\n\r\nexport default ReactReduxContext\r\n","import type { useSyncExternalStore } from 'use-sync-external-store'\r\nimport type { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector'\r\n\r\nexport const notInitialized = () => {\r\n throw new Error('uSES not initialized!')\r\n}\r\n\r\nexport type uSES = typeof useSyncExternalStore\r\nexport type uSESWS = typeof useSyncExternalStoreWithSelector\r\n","import { React } from '../utils/react'\r\nimport { ReactReduxContext } from '../components/Context'\r\nimport type { ReactReduxContextValue } from '../components/Context'\r\n\r\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\r\nexport function createReduxContextHook(context = ReactReduxContext) {\r\n return function useReduxContext(): ReactReduxContextValue {\r\n const contextValue = React.useContext(context)\r\n\r\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\r\n throw new Error(\r\n 'could not find react-redux context value; please ensure the component is wrapped in a '\r\n )\r\n }\r\n\r\n return contextValue!\r\n }\r\n}\r\n\r\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\r\nexport const useReduxContext = /*#__PURE__*/ createReduxContextHook()\r\n","//import * as React from 'react'\r\nimport { React } from '../utils/react'\r\n\r\nimport type { ReactReduxContextValue } from '../components/Context'\r\nimport { ReactReduxContext } from '../components/Context'\r\nimport type { EqualityFn, NoInfer } from '../types'\r\nimport type { uSESWS } from '../utils/useSyncExternalStore'\r\nimport { notInitialized } from '../utils/useSyncExternalStore'\r\nimport {\r\n createReduxContextHook,\r\n useReduxContext as useDefaultReduxContext,\r\n} from './useReduxContext'\r\n\r\n/**\r\n * The frequency of development mode checks.\r\n *\r\n * @since 8.1.0\r\n * @internal\r\n */\r\nexport type DevModeCheckFrequency = 'never' | 'once' | 'always'\r\n\r\n/**\r\n * Represents the configuration for development mode checks.\r\n *\r\n * @since 9.0.0\r\n * @internal\r\n */\r\nexport interface DevModeChecks {\r\n /**\r\n * Overrides the global stability check for the selector.\r\n * - `once` - Run only the first time the selector is called.\r\n * - `always` - Run every time the selector is called.\r\n * - `never` - Never run the stability check.\r\n *\r\n * @default 'once'\r\n *\r\n * @since 8.1.0\r\n */\r\n stabilityCheck: DevModeCheckFrequency\r\n\r\n /**\r\n * Overrides the global identity function check for the selector.\r\n * - `once` - Run only the first time the selector is called.\r\n * - `always` - Run every time the selector is called.\r\n * - `never` - Never run the identity function check.\r\n *\r\n * **Note**: Previously referred to as `noopCheck`.\r\n *\r\n * @default 'once'\r\n *\r\n * @since 9.0.0\r\n */\r\n identityFunctionCheck: DevModeCheckFrequency\r\n}\r\n\r\nexport interface UseSelectorOptions {\r\n equalityFn?: EqualityFn\r\n\r\n /**\r\n * `useSelector` performs additional checks in development mode to help\r\n * identify and warn about potential issues in selector behavior. This\r\n * option allows you to customize the behavior of these checks per selector.\r\n *\r\n * @since 9.0.0\r\n */\r\n devModeChecks?: Partial\r\n}\r\n\r\nexport interface UseSelector {\r\n (\r\n selector: (state: TState) => Selected,\r\n equalityFn?: EqualityFn\r\n ): Selected\r\n (\r\n selector: (state: TState) => Selected,\r\n options?: UseSelectorOptions\r\n ): Selected\r\n}\r\n\r\nlet useSyncExternalStoreWithSelector = notInitialized as uSESWS\r\nexport const initializeUseSelector = (fn: uSESWS) => {\r\n useSyncExternalStoreWithSelector = fn\r\n}\r\n\r\nconst refEquality: EqualityFn = (a, b) => a === b\r\n\r\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\r\nexport function createSelectorHook(\r\n context: React.Context | null> = ReactReduxContext\r\n): UseSelector {\r\n const useReduxContext =\r\n context === ReactReduxContext\r\n ? useDefaultReduxContext\r\n : createReduxContextHook(context)\r\n\r\n return function useSelector(\r\n selector: (state: TState) => Selected,\r\n equalityFnOrOptions:\r\n | EqualityFn>\r\n | UseSelectorOptions> = {}\r\n ): Selected {\r\n const { equalityFn = refEquality, devModeChecks = {} } =\r\n typeof equalityFnOrOptions === 'function'\r\n ? { equalityFn: equalityFnOrOptions }\r\n : equalityFnOrOptions\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!selector) {\r\n throw new Error(`You must pass a selector to useSelector`)\r\n }\r\n if (typeof selector !== 'function') {\r\n throw new Error(`You must pass a function as a selector to useSelector`)\r\n }\r\n if (typeof equalityFn !== 'function') {\r\n throw new Error(\r\n `You must pass a function as an equality function to useSelector`\r\n )\r\n }\r\n }\r\n\r\n const {\r\n store,\r\n subscription,\r\n getServerState,\r\n stabilityCheck,\r\n identityFunctionCheck,\r\n } = useReduxContext()\r\n\r\n const firstRun = React.useRef(true)\r\n\r\n const wrappedSelector = React.useCallback(\r\n {\r\n [selector.name](state: TState) {\r\n const selected = selector(state)\r\n if (process.env.NODE_ENV !== 'production') {\r\n const {\r\n identityFunctionCheck: finalIdentityFunctionCheck,\r\n stabilityCheck: finalStabilityCheck,\r\n } = {\r\n stabilityCheck,\r\n identityFunctionCheck,\r\n ...devModeChecks,\r\n }\r\n if (\r\n finalStabilityCheck === 'always' ||\r\n (finalStabilityCheck === 'once' && firstRun.current)\r\n ) {\r\n const toCompare = selector(state)\r\n if (!equalityFn(selected, toCompare)) {\r\n let stack: string | undefined = undefined\r\n try {\r\n throw new Error()\r\n } catch (e) {\r\n ;({ stack } = e as Error)\r\n }\r\n console.warn(\r\n 'Selector ' +\r\n (selector.name || 'unknown') +\r\n ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' +\r\n '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization',\r\n {\r\n state,\r\n selected,\r\n selected2: toCompare,\r\n stack,\r\n }\r\n )\r\n }\r\n }\r\n if (\r\n finalIdentityFunctionCheck === 'always' ||\r\n (finalIdentityFunctionCheck === 'once' && firstRun.current)\r\n ) {\r\n // @ts-ignore\r\n if (selected === state) {\r\n let stack: string | undefined = undefined\r\n try {\r\n throw new Error()\r\n } catch (e) {\r\n ;({ stack } = e as Error)\r\n }\r\n console.warn(\r\n 'Selector ' +\r\n (selector.name || 'unknown') +\r\n ' returned the root state when called. This can lead to unnecessary rerenders.' +\r\n '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.',\r\n { stack }\r\n )\r\n }\r\n }\r\n if (firstRun.current) firstRun.current = false\r\n }\r\n return selected\r\n },\r\n }[selector.name],\r\n [selector, stabilityCheck, devModeChecks.stabilityCheck]\r\n )\r\n\r\n const selectedState = useSyncExternalStoreWithSelector(\r\n subscription.addNestedSub,\r\n store.getState,\r\n getServerState || store.getState,\r\n wrappedSelector,\r\n equalityFn\r\n )\r\n\r\n React.useDebugValue(selectedState)\r\n\r\n return selectedState\r\n }\r\n}\r\n\r\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\r\nexport const useSelector = /*#__PURE__*/ createSelectorHook()\r\n","import type { ElementType, MemoExoticComponent, ReactElement } from 'react'\r\n\r\n// Directly ported from:\r\n// https://unpkg.com/browse/react-is@18.3.0-canary-ee68446ff-20231115/cjs/react-is.production.js\r\n// It's very possible this could change in the future, but given that\r\n// we only use these in `connect`, this is a low priority.\r\n\r\nconst REACT_ELEMENT_TYPE = Symbol.for('react.element')\r\nconst REACT_PORTAL_TYPE = Symbol.for('react.portal')\r\nconst REACT_FRAGMENT_TYPE = Symbol.for('react.fragment')\r\nconst REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode')\r\nconst REACT_PROFILER_TYPE = Symbol.for('react.profiler')\r\nconst REACT_PROVIDER_TYPE = Symbol.for('react.provider')\r\nconst REACT_CONTEXT_TYPE = Symbol.for('react.context')\r\nconst REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context')\r\nconst REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref')\r\nconst REACT_SUSPENSE_TYPE = Symbol.for('react.suspense')\r\nconst REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list')\r\nconst REACT_MEMO_TYPE = Symbol.for('react.memo')\r\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy')\r\nconst REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen')\r\nconst REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference')\r\n\r\nexport const ForwardRef = REACT_FORWARD_REF_TYPE\r\nexport const Memo = REACT_MEMO_TYPE\r\n\r\nexport function isValidElementType(type: any): type is ElementType {\r\n if (typeof type === 'string' || typeof type === 'function') {\r\n return true\r\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\r\n\r\n if (\r\n type === REACT_FRAGMENT_TYPE ||\r\n type === REACT_PROFILER_TYPE ||\r\n type === REACT_STRICT_MODE_TYPE ||\r\n type === REACT_SUSPENSE_TYPE ||\r\n type === REACT_SUSPENSE_LIST_TYPE ||\r\n type === REACT_OFFSCREEN_TYPE\r\n ) {\r\n return true\r\n }\r\n\r\n if (typeof type === 'object' && type !== null) {\r\n if (\r\n type.$$typeof === REACT_LAZY_TYPE ||\r\n type.$$typeof === REACT_MEMO_TYPE ||\r\n type.$$typeof === REACT_PROVIDER_TYPE ||\r\n type.$$typeof === REACT_CONTEXT_TYPE ||\r\n type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\r\n // types supported by any Flight configuration anywhere since\r\n // we don't know which Flight build this will end up being used\r\n // with.\r\n type.$$typeof === REACT_CLIENT_REFERENCE ||\r\n type.getModuleId !== undefined\r\n ) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nfunction typeOf(object: any): symbol | undefined {\r\n if (typeof object === 'object' && object !== null) {\r\n const $$typeof = object.$$typeof\r\n\r\n switch ($$typeof) {\r\n case REACT_ELEMENT_TYPE: {\r\n const type = object.type\r\n\r\n switch (type) {\r\n case REACT_FRAGMENT_TYPE:\r\n case REACT_PROFILER_TYPE:\r\n case REACT_STRICT_MODE_TYPE:\r\n case REACT_SUSPENSE_TYPE:\r\n case REACT_SUSPENSE_LIST_TYPE:\r\n return type\r\n\r\n default: {\r\n const $$typeofType = type && type.$$typeof\r\n\r\n switch ($$typeofType) {\r\n case REACT_SERVER_CONTEXT_TYPE:\r\n case REACT_CONTEXT_TYPE:\r\n case REACT_FORWARD_REF_TYPE:\r\n case REACT_LAZY_TYPE:\r\n case REACT_MEMO_TYPE:\r\n case REACT_PROVIDER_TYPE:\r\n return $$typeofType\r\n\r\n default:\r\n return $$typeof\r\n }\r\n }\r\n }\r\n }\r\n\r\n case REACT_PORTAL_TYPE: {\r\n return $$typeof\r\n }\r\n }\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nexport function isContextConsumer(object: any): object is ReactElement {\r\n return typeOf(object) === REACT_CONTEXT_TYPE\r\n}\r\n\r\nexport function isMemo(object: any): object is MemoExoticComponent {\r\n return typeOf(object) === REACT_MEMO_TYPE\r\n}\r\n","// Default to a dummy \"batch\" implementation that just runs the callback\r\nexport function defaultNoopBatch(callback: () => void) {\r\n callback()\r\n}\r\n","import { defaultNoopBatch as batch } from './batch'\r\n\r\n// encapsulates the subscription logic for connecting a component to the redux store, as\r\n// well as nesting subscriptions of descendant components, so that we can ensure the\r\n// ancestor components re-render before descendants\r\n\r\ntype VoidFunc = () => void\r\n\r\ntype Listener = {\r\n callback: VoidFunc\r\n next: Listener | null\r\n prev: Listener | null\r\n}\r\n\r\nfunction createListenerCollection() {\r\n let first: Listener | null = null\r\n let last: Listener | null = null\r\n\r\n return {\r\n clear() {\r\n first = null\r\n last = null\r\n },\r\n\r\n notify() {\r\n batch(() => {\r\n let listener = first\r\n while (listener) {\r\n listener.callback()\r\n listener = listener.next\r\n }\r\n })\r\n },\r\n\r\n get() {\r\n let listeners: Listener[] = []\r\n let listener = first\r\n while (listener) {\r\n listeners.push(listener)\r\n listener = listener.next\r\n }\r\n return listeners\r\n },\r\n\r\n subscribe(callback: () => void) {\r\n let isSubscribed = true\r\n\r\n let listener: Listener = (last = {\r\n callback,\r\n next: null,\r\n prev: last,\r\n })\r\n\r\n if (listener.prev) {\r\n listener.prev.next = listener\r\n } else {\r\n first = listener\r\n }\r\n\r\n return function unsubscribe() {\r\n if (!isSubscribed || first === null) return\r\n isSubscribed = false\r\n\r\n if (listener.next) {\r\n listener.next.prev = listener.prev\r\n } else {\r\n last = listener.prev\r\n }\r\n if (listener.prev) {\r\n listener.prev.next = listener.next\r\n } else {\r\n first = listener.next\r\n }\r\n }\r\n },\r\n }\r\n}\r\n\r\ntype ListenerCollection = ReturnType\r\n\r\nexport interface Subscription {\r\n addNestedSub: (listener: VoidFunc) => VoidFunc\r\n notifyNestedSubs: VoidFunc\r\n handleChangeWrapper: VoidFunc\r\n isSubscribed: () => boolean\r\n onStateChange?: VoidFunc | null\r\n trySubscribe: VoidFunc\r\n tryUnsubscribe: VoidFunc\r\n getListeners: () => ListenerCollection\r\n}\r\n\r\nconst nullListeners = {\r\n notify() {},\r\n get: () => [],\r\n} as unknown as ListenerCollection\r\n\r\nexport function createSubscription(store: any, parentSub?: Subscription) {\r\n let unsubscribe: VoidFunc | undefined\r\n let listeners: ListenerCollection = nullListeners\r\n\r\n // Reasons to keep the subscription active\r\n let subscriptionsAmount = 0\r\n\r\n // Is this specific subscription subscribed (or only nested ones?)\r\n let selfSubscribed = false\r\n\r\n function addNestedSub(listener: () => void) {\r\n trySubscribe()\r\n\r\n const cleanupListener = listeners.subscribe(listener)\r\n\r\n // cleanup nested sub\r\n let removed = false\r\n return () => {\r\n if (!removed) {\r\n removed = true\r\n cleanupListener()\r\n tryUnsubscribe()\r\n }\r\n }\r\n }\r\n\r\n function notifyNestedSubs() {\r\n listeners.notify()\r\n }\r\n\r\n function handleChangeWrapper() {\r\n if (subscription.onStateChange) {\r\n subscription.onStateChange()\r\n }\r\n }\r\n\r\n function isSubscribed() {\r\n return selfSubscribed\r\n }\r\n\r\n function trySubscribe() {\r\n subscriptionsAmount++\r\n if (!unsubscribe) {\r\n unsubscribe = parentSub\r\n ? parentSub.addNestedSub(handleChangeWrapper)\r\n : store.subscribe(handleChangeWrapper)\r\n\r\n listeners = createListenerCollection()\r\n }\r\n }\r\n\r\n function tryUnsubscribe() {\r\n subscriptionsAmount--\r\n if (unsubscribe && subscriptionsAmount === 0) {\r\n unsubscribe()\r\n unsubscribe = undefined\r\n listeners.clear()\r\n listeners = nullListeners\r\n }\r\n }\r\n\r\n function trySubscribeSelf() {\r\n if (!selfSubscribed) {\r\n selfSubscribed = true\r\n trySubscribe()\r\n }\r\n }\r\n\r\n function tryUnsubscribeSelf() {\r\n if (selfSubscribed) {\r\n selfSubscribed = false\r\n tryUnsubscribe()\r\n }\r\n }\r\n\r\n const subscription: Subscription = {\r\n addNestedSub,\r\n notifyNestedSubs,\r\n handleChangeWrapper,\r\n isSubscribed,\r\n trySubscribe: trySubscribeSelf,\r\n tryUnsubscribe: tryUnsubscribeSelf,\r\n getListeners: () => listeners,\r\n }\r\n\r\n return subscription\r\n}\r\n","import { React } from '../utils/react'\r\n\r\n// React currently throws a warning when using useLayoutEffect on the server.\r\n// To get around it, we can conditionally useEffect on the server (no-op) and\r\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\r\n// subscription callback always has the selector from the latest render commit\r\n// available, otherwise a store update may happen between render and the effect,\r\n// which may cause missed updates; we also must ensure the store subscription\r\n// is created synchronously, otherwise a store update may occur before the\r\n// subscription is created and an inconsistent state may be observed\r\n\r\n// Matches logic in React's `shared/ExecutionEnvironment` file\r\nexport const canUseDOM = !!(\r\n typeof window !== 'undefined' &&\r\n typeof window.document !== 'undefined' &&\r\n typeof window.document.createElement !== 'undefined'\r\n)\r\n\r\nexport const useIsomorphicLayoutEffect = canUseDOM\r\n ? React.useLayoutEffect\r\n : React.useEffect\r\n","// Copied directly from:\r\n// https://github.com/mridgway/hoist-non-react-statics/blob/main/src/index.js\r\n// https://unpkg.com/browse/@types/hoist-non-react-statics@3.3.1/index.d.ts\r\n\r\n/**\r\n * Copyright 2015, Yahoo! Inc.\r\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\r\n */\r\nimport type * as React from 'react'\r\nimport { ForwardRef, Memo, isMemo } from '../utils/react-is'\r\n\r\nconst REACT_STATICS = {\r\n childContextTypes: true,\r\n contextType: true,\r\n contextTypes: true,\r\n defaultProps: true,\r\n displayName: true,\r\n getDefaultProps: true,\r\n getDerivedStateFromError: true,\r\n getDerivedStateFromProps: true,\r\n mixins: true,\r\n propTypes: true,\r\n type: true,\r\n} as const\r\n\r\nconst KNOWN_STATICS = {\r\n name: true,\r\n length: true,\r\n prototype: true,\r\n caller: true,\r\n callee: true,\r\n arguments: true,\r\n arity: true,\r\n} as const\r\n\r\nconst FORWARD_REF_STATICS = {\r\n $$typeof: true,\r\n render: true,\r\n defaultProps: true,\r\n displayName: true,\r\n propTypes: true,\r\n} as const\r\n\r\nconst MEMO_STATICS = {\r\n $$typeof: true,\r\n compare: true,\r\n defaultProps: true,\r\n displayName: true,\r\n propTypes: true,\r\n type: true,\r\n} as const\r\n\r\nconst TYPE_STATICS = {\r\n [ForwardRef]: FORWARD_REF_STATICS,\r\n [Memo]: MEMO_STATICS,\r\n} as const\r\n\r\nfunction getStatics(component: any) {\r\n // React v16.11 and below\r\n if (isMemo(component)) {\r\n return MEMO_STATICS\r\n }\r\n\r\n // React v16.12 and above\r\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS\r\n}\r\n\r\nexport type NonReactStatics<\r\n S extends React.ComponentType,\r\n C extends {\r\n [key: string]: true\r\n } = {}\r\n> = {\r\n [key in Exclude<\r\n keyof S,\r\n S extends React.MemoExoticComponent\r\n ? keyof typeof MEMO_STATICS | keyof C\r\n : S extends React.ForwardRefExoticComponent\r\n ? keyof typeof FORWARD_REF_STATICS | keyof C\r\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\r\n >]: S[key]\r\n}\r\n\r\nconst defineProperty = Object.defineProperty\r\nconst getOwnPropertyNames = Object.getOwnPropertyNames\r\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols\r\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor\r\nconst getPrototypeOf = Object.getPrototypeOf\r\nconst objectPrototype = Object.prototype\r\n\r\nexport default function hoistNonReactStatics<\r\n T extends React.ComponentType,\r\n S extends React.ComponentType,\r\n C extends {\r\n [key: string]: true\r\n } = {}\r\n>(targetComponent: T, sourceComponent: S): T & NonReactStatics {\r\n if (typeof sourceComponent !== 'string') {\r\n // don't hoist over string (html) components\r\n\r\n if (objectPrototype) {\r\n const inheritedComponent = getPrototypeOf(sourceComponent)\r\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\r\n hoistNonReactStatics(targetComponent, inheritedComponent)\r\n }\r\n }\r\n\r\n let keys: (string | symbol)[] = getOwnPropertyNames(sourceComponent)\r\n\r\n if (getOwnPropertySymbols) {\r\n keys = keys.concat(getOwnPropertySymbols(sourceComponent))\r\n }\r\n\r\n const targetStatics = getStatics(targetComponent)\r\n const sourceStatics = getStatics(sourceComponent)\r\n\r\n for (let i = 0; i < keys.length; ++i) {\r\n const key = keys[i]\r\n if (\r\n !KNOWN_STATICS[key as keyof typeof KNOWN_STATICS] &&\r\n !(sourceStatics && sourceStatics[key as keyof typeof sourceStatics]) &&\r\n !(targetStatics && targetStatics[key as keyof typeof targetStatics])\r\n ) {\r\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key)\r\n try {\r\n // Avoid failures from read-only properties\r\n defineProperty(targetComponent, key, descriptor!)\r\n } catch (e) {\r\n // ignore\r\n }\r\n }\r\n }\r\n }\r\n\r\n return targetComponent as any\r\n}\r\n","import type { Context, ReactNode } from 'react'\r\nimport { React } from '../utils/react'\r\nimport type { Action, Store, UnknownAction } from 'redux'\r\nimport type { DevModeCheckFrequency } from '../hooks/useSelector'\r\nimport { createSubscription } from '../utils/Subscription'\r\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'\r\nimport type { ReactReduxContextValue } from './Context'\r\nimport { ReactReduxContext } from './Context'\r\n\r\nexport interface ProviderProps<\r\n A extends Action = UnknownAction,\r\n S = unknown\r\n> {\r\n /**\r\n * The single Redux store in your application.\r\n */\r\n store: Store\r\n\r\n /**\r\n * An optional server state snapshot. Will be used during initial hydration render if available, to ensure that the UI output is consistent with the HTML generated on the server.\r\n */\r\n serverState?: S\r\n\r\n /**\r\n * Optional context to be used internally in react-redux. Use React.createContext() to create a context to be used.\r\n * If this is used, you'll need to customize `connect` by supplying the same context provided to the Provider.\r\n * Set the initial value to null, and the hooks will error\r\n * if this is not overwritten by Provider.\r\n */\r\n context?: Context | null>\r\n\r\n /**\r\n * Determines the frequency of stability checks for all selectors.\r\n * This setting overrides the global configuration for\r\n * the `useSelector` stability check, allowing you to specify how often\r\n * these checks should occur in development mode.\r\n *\r\n * @since 8.1.0\r\n */\r\n stabilityCheck?: DevModeCheckFrequency\r\n\r\n /**\r\n * Determines the frequency of identity function checks for all selectors.\r\n * This setting overrides the global configuration for\r\n * the `useSelector` identity function check, allowing you to specify how often\r\n * these checks should occur in development mode.\r\n *\r\n * **Note**: Previously referred to as `noopCheck`.\r\n *\r\n * @since 9.0.0\r\n */\r\n identityFunctionCheck?: DevModeCheckFrequency\r\n\r\n children: ReactNode\r\n}\r\n\r\nfunction Provider = UnknownAction, S = unknown>({\r\n store,\r\n context,\r\n children,\r\n serverState,\r\n stabilityCheck = 'once',\r\n identityFunctionCheck = 'once',\r\n}: ProviderProps) {\r\n const contextValue = React.useMemo(() => {\r\n const subscription = createSubscription(store)\r\n return {\r\n store,\r\n subscription,\r\n getServerState: serverState ? () => serverState : undefined,\r\n stabilityCheck,\r\n identityFunctionCheck,\r\n }\r\n }, [store, serverState, stabilityCheck, identityFunctionCheck])\r\n\r\n const previousState = React.useMemo(() => store.getState(), [store])\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n const { subscription } = contextValue\r\n subscription.onStateChange = subscription.notifyNestedSubs\r\n subscription.trySubscribe()\r\n\r\n if (previousState !== store.getState()) {\r\n subscription.notifyNestedSubs()\r\n }\r\n return () => {\r\n subscription.tryUnsubscribe()\r\n subscription.onStateChange = undefined\r\n }\r\n }, [contextValue, previousState])\r\n\r\n const Context = context || ReactReduxContext\r\n\r\n // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\r\n return {children}\r\n}\r\n\r\nexport default Provider\r\n","import type { Context } from 'react'\r\nimport type { Action as BasicAction, UnknownAction, Store } from 'redux'\r\nimport type { ReactReduxContextValue } from '../components/Context'\r\nimport { ReactReduxContext } from '../components/Context'\r\nimport {\r\n useReduxContext as useDefaultReduxContext,\r\n createReduxContextHook,\r\n} from './useReduxContext'\r\n\r\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\r\nexport function createStoreHook<\r\n S = unknown,\r\n A extends BasicAction = UnknownAction\r\n // @ts-ignore\r\n>(context?: Context | null> = ReactReduxContext) {\r\n const useReduxContext =\r\n // @ts-ignore\r\n context === ReactReduxContext\r\n ? useDefaultReduxContext\r\n : // @ts-ignore\r\n createReduxContextHook(context)\r\n return function useStore<\r\n State = S,\r\n Action2 extends BasicAction = A\r\n // @ts-ignore\r\n >() {\r\n const { store } = useReduxContext()\r\n // @ts-ignore\r\n return store as Store\r\n }\r\n}\r\n\r\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\r\nexport const useStore = /*#__PURE__*/ createStoreHook()\r\n","import type { Action, Dispatch, UnknownAction } from 'redux'\r\nimport type { Context } from 'react'\r\n\r\nimport type { ReactReduxContextValue } from '../components/Context'\r\nimport { ReactReduxContext } from '../components/Context'\r\nimport { useStore as useDefaultStore, createStoreHook } from './useStore'\r\n\r\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\r\nexport function createDispatchHook<\r\n S = unknown,\r\n A extends Action = UnknownAction\r\n // @ts-ignore\r\n>(context?: Context | null> = ReactReduxContext) {\r\n const useStore =\r\n // @ts-ignore\r\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context)\r\n\r\n return function useDispatch<\r\n AppDispatch extends Dispatch
= Dispatch\r\n >(): AppDispatch {\r\n const store = useStore()\r\n // @ts-ignore\r\n return store.dispatch\r\n }\r\n}\r\n\r\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\r\nexport const useDispatch = /*#__PURE__*/ createDispatchHook()\r\n","// The primary entry point assumes we are working with React 18, and thus have\r\n// useSyncExternalStore available. We can import that directly from React itself.\r\n// The useSyncExternalStoreWithSelector has to be imported, but we can use the\r\n// non-shim version. This shaves off the byte size of the shim.\r\n\r\nimport * as React from 'react'\r\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js'\r\n\r\nimport { initializeUseSelector } from './hooks/useSelector'\r\nimport { initializeConnect } from './components/connect'\r\n\r\ninitializeUseSelector(useSyncExternalStoreWithSelector)\r\ninitializeConnect(React.useSyncExternalStore)\r\n\r\nexport * from './exports'\r\n","/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\r\nimport type { ComponentType } from 'react'\r\nimport { React } from '../utils/react'\r\nimport { isValidElementType, isContextConsumer } from '../utils/react-is'\r\n\r\nimport type { Store } from 'redux'\r\n\r\nimport type {\r\n ConnectedComponent,\r\n InferableComponentEnhancer,\r\n InferableComponentEnhancerWithProps,\r\n ResolveThunks,\r\n DispatchProp,\r\n ConnectPropsMaybeWithoutContext,\r\n} from '../types'\r\n\r\nimport type {\r\n MapStateToPropsParam,\r\n MapDispatchToPropsParam,\r\n MergeProps,\r\n MapDispatchToPropsNonObject,\r\n SelectorFactoryOptions,\r\n} from '../connect/selectorFactory'\r\nimport defaultSelectorFactory from '../connect/selectorFactory'\r\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps'\r\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps'\r\nimport { mergePropsFactory } from '../connect/mergeProps'\r\n\r\nimport type { Subscription } from '../utils/Subscription'\r\nimport { createSubscription } from '../utils/Subscription'\r\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'\r\nimport shallowEqual from '../utils/shallowEqual'\r\nimport hoistStatics from '../utils/hoistStatics'\r\nimport warning from '../utils/warning'\r\n\r\nimport type {\r\n ReactReduxContextValue,\r\n ReactReduxContextInstance,\r\n} from './Context'\r\nimport { ReactReduxContext } from './Context'\r\n\r\nimport type { uSES } from '../utils/useSyncExternalStore'\r\nimport { notInitialized } from '../utils/useSyncExternalStore'\r\n\r\nlet useSyncExternalStore = notInitialized as uSES\r\nexport const initializeConnect = (fn: uSES) => {\r\n useSyncExternalStore = fn\r\n}\r\n\r\n// Define some constant arrays just to avoid re-creating these\r\nconst EMPTY_ARRAY: [unknown, number] = [null, 0]\r\nconst NO_SUBSCRIPTION_ARRAY = [null, null]\r\n\r\n// Attempts to stringify whatever not-really-a-component value we were given\r\n// for logging in an error message\r\nconst stringifyComponent = (Comp: unknown) => {\r\n try {\r\n return JSON.stringify(Comp)\r\n } catch (err) {\r\n return String(Comp)\r\n }\r\n}\r\n\r\ntype EffectFunc = (...args: any[]) => void | ReturnType\r\n\r\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\r\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\r\n// - we extract this to a separate function to avoid closing over values\r\n// and causing memory leaks\r\nfunction useIsomorphicLayoutEffectWithArgs(\r\n effectFunc: EffectFunc,\r\n effectArgs: any[],\r\n dependencies?: React.DependencyList\r\n) {\r\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies)\r\n}\r\n\r\n// Effect callback, extracted: assign the latest props values to refs for later usage\r\nfunction captureWrapperProps(\r\n lastWrapperProps: React.MutableRefObject,\r\n lastChildProps: React.MutableRefObject,\r\n renderIsScheduled: React.MutableRefObject,\r\n wrapperProps: unknown,\r\n // actualChildProps: unknown,\r\n childPropsFromStoreUpdate: React.MutableRefObject,\r\n notifyNestedSubs: () => void\r\n) {\r\n // We want to capture the wrapper props and child props we used for later comparisons\r\n lastWrapperProps.current = wrapperProps\r\n renderIsScheduled.current = false\r\n\r\n // If the render was from a store update, clear out that reference and cascade the subscriber update\r\n if (childPropsFromStoreUpdate.current) {\r\n childPropsFromStoreUpdate.current = null\r\n notifyNestedSubs()\r\n }\r\n}\r\n\r\n// Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\r\n// check for updates after dispatched actions, and trigger re-renders.\r\nfunction subscribeUpdates(\r\n shouldHandleStateChanges: boolean,\r\n store: Store,\r\n subscription: Subscription,\r\n childPropsSelector: (state: unknown, props: unknown) => unknown,\r\n lastWrapperProps: React.MutableRefObject,\r\n lastChildProps: React.MutableRefObject,\r\n renderIsScheduled: React.MutableRefObject,\r\n isMounted: React.MutableRefObject,\r\n childPropsFromStoreUpdate: React.MutableRefObject,\r\n notifyNestedSubs: () => void,\r\n // forceComponentUpdateDispatch: React.Dispatch,\r\n additionalSubscribeListener: () => void\r\n) {\r\n // If we're not subscribed to the store, nothing to do here\r\n if (!shouldHandleStateChanges) return () => {}\r\n\r\n // Capture values for checking if and when this component unmounts\r\n let didUnsubscribe = false\r\n let lastThrownError: Error | null = null\r\n\r\n // We'll run this callback every time a store subscription update propagates to this component\r\n const checkForUpdates = () => {\r\n if (didUnsubscribe || !isMounted.current) {\r\n // Don't run stale listeners.\r\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\r\n return\r\n }\r\n\r\n // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\r\n const latestStoreState = store.getState()\r\n\r\n let newChildProps, error\r\n try {\r\n // Actually run the selector with the most recent store state and wrapper props\r\n // to determine what the child props should be\r\n newChildProps = childPropsSelector(\r\n latestStoreState,\r\n lastWrapperProps.current\r\n )\r\n } catch (e) {\r\n error = e\r\n lastThrownError = e as Error | null\r\n }\r\n\r\n if (!error) {\r\n lastThrownError = null\r\n }\r\n\r\n // If the child props haven't changed, nothing to do here - cascade the subscription update\r\n if (newChildProps === lastChildProps.current) {\r\n if (!renderIsScheduled.current) {\r\n notifyNestedSubs()\r\n }\r\n } else {\r\n // Save references to the new child props. Note that we track the \"child props from store update\"\r\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\r\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\r\n // forcing another re-render, which we don't want.\r\n lastChildProps.current = newChildProps\r\n childPropsFromStoreUpdate.current = newChildProps\r\n renderIsScheduled.current = true\r\n\r\n // TODO This is hacky and not how `uSES` is meant to be used\r\n // Trigger the React `useSyncExternalStore` subscriber\r\n additionalSubscribeListener()\r\n }\r\n }\r\n\r\n // Actually subscribe to the nearest connected ancestor (or store)\r\n subscription.onStateChange = checkForUpdates\r\n subscription.trySubscribe()\r\n\r\n // Pull data from the store after first render in case the store has\r\n // changed since we began.\r\n checkForUpdates()\r\n\r\n const unsubscribeWrapper = () => {\r\n didUnsubscribe = true\r\n subscription.tryUnsubscribe()\r\n subscription.onStateChange = null\r\n\r\n if (lastThrownError) {\r\n // It's possible that we caught an error due to a bad mapState function, but the\r\n // parent re-rendered without this component and we're about to unmount.\r\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\r\n // if we ever do those wrong, this throw will surface the error in our tests.\r\n // In that case, throw the error from here so it doesn't get lost.\r\n throw lastThrownError\r\n }\r\n }\r\n\r\n return unsubscribeWrapper\r\n}\r\n\r\n// Reducer initial state creation for our update reducer\r\nconst initStateUpdates = () => EMPTY_ARRAY\r\n\r\nexport interface ConnectProps {\r\n /** A custom Context instance that the component can use to access the store from an alternate Provider using that same Context instance */\r\n context?: ReactReduxContextInstance\r\n /** A Redux store instance to be used for subscriptions instead of the store from a Provider */\r\n store?: Store\r\n}\r\n\r\ninterface InternalConnectProps extends ConnectProps {\r\n reactReduxForwardedRef?: React.ForwardedRef\r\n}\r\n\r\nfunction strictEqual(a: unknown, b: unknown) {\r\n return a === b\r\n}\r\n\r\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\r\nexport type ConnectedProps =\r\n TConnector extends InferableComponentEnhancerWithProps<\r\n infer TInjectedProps,\r\n any\r\n >\r\n ? unknown extends TInjectedProps\r\n ? TConnector extends InferableComponentEnhancer\r\n ? TInjectedProps\r\n : never\r\n : TInjectedProps\r\n : never\r\n\r\nexport interface ConnectOptions<\r\n State = unknown,\r\n TStateProps = {},\r\n TOwnProps = {},\r\n TMergedProps = {}\r\n> {\r\n forwardRef?: boolean\r\n context?: typeof ReactReduxContext\r\n areStatesEqual?: (\r\n nextState: State,\r\n prevState: State,\r\n nextOwnProps: TOwnProps,\r\n prevOwnProps: TOwnProps\r\n ) => boolean\r\n\r\n areOwnPropsEqual?: (\r\n nextOwnProps: TOwnProps,\r\n prevOwnProps: TOwnProps\r\n ) => boolean\r\n\r\n areStatePropsEqual?: (\r\n nextStateProps: TStateProps,\r\n prevStateProps: TStateProps\r\n ) => boolean\r\n areMergedPropsEqual?: (\r\n nextMergedProps: TMergedProps,\r\n prevMergedProps: TMergedProps\r\n ) => boolean\r\n}\r\n\r\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps\r\n * @param mapDispatchToProps\r\n * @param mergeProps\r\n * @param options\r\n */\r\nexport interface Connect {\r\n // tslint:disable:no-unnecessary-generics\r\n (): InferableComponentEnhancer\r\n\r\n /** mapState only */\r\n (\r\n mapStateToProps: MapStateToPropsParam\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapDispatch only (as a function) */\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: MapDispatchToPropsNonObject\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapDispatch only (as an object) */\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: MapDispatchToPropsParam\r\n ): InferableComponentEnhancerWithProps<\r\n ResolveThunks,\r\n TOwnProps\r\n >\r\n\r\n /** mapState and mapDispatch (as a function)*/\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: MapDispatchToPropsNonObject\r\n ): InferableComponentEnhancerWithProps<\r\n TStateProps & TDispatchProps,\r\n TOwnProps\r\n >\r\n\r\n /** mapState and mapDispatch (nullish) */\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: null | undefined\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapState and mapDispatch (as an object) */\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: MapDispatchToPropsParam\r\n ): InferableComponentEnhancerWithProps<\r\n TStateProps & ResolveThunks,\r\n TOwnProps\r\n >\r\n\r\n /** mergeProps only */\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: null | undefined,\r\n mergeProps: MergeProps\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapState and mergeProps */\r\n <\r\n TStateProps = {},\r\n no_dispatch = {},\r\n TOwnProps = {},\r\n TMergedProps = {},\r\n State = DefaultState\r\n >(\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: null | undefined,\r\n mergeProps: MergeProps\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapDispatch (as a object) and mergeProps */\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: MapDispatchToPropsParam,\r\n mergeProps: MergeProps\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapState and options */\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: null | undefined,\r\n mergeProps: null | undefined,\r\n options: ConnectOptions\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapDispatch (as a function) and options */\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: MapDispatchToPropsNonObject,\r\n mergeProps: null | undefined,\r\n options: ConnectOptions<{}, TStateProps, TOwnProps>\r\n ): InferableComponentEnhancerWithProps\r\n\r\n /** mapDispatch (as an object) and options*/\r\n (\r\n mapStateToProps: null | undefined,\r\n mapDispatchToProps: MapDispatchToPropsParam,\r\n mergeProps: null | undefined,\r\n options: ConnectOptions<{}, TStateProps, TOwnProps>\r\n ): InferableComponentEnhancerWithProps<\r\n ResolveThunks,\r\n TOwnProps\r\n >\r\n\r\n /** mapState, mapDispatch (as a function), and options */\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: MapDispatchToPropsNonObject,\r\n mergeProps: null | undefined,\r\n options: ConnectOptions\r\n ): InferableComponentEnhancerWithProps<\r\n TStateProps & TDispatchProps,\r\n TOwnProps\r\n >\r\n\r\n /** mapState, mapDispatch (as an object), and options */\r\n (\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: MapDispatchToPropsParam,\r\n mergeProps: null | undefined,\r\n options: ConnectOptions\r\n ): InferableComponentEnhancerWithProps<\r\n TStateProps & ResolveThunks,\r\n TOwnProps\r\n >\r\n\r\n /** mapState, mapDispatch, mergeProps, and options */\r\n <\r\n TStateProps = {},\r\n TDispatchProps = {},\r\n TOwnProps = {},\r\n TMergedProps = {},\r\n State = DefaultState\r\n >(\r\n mapStateToProps: MapStateToPropsParam,\r\n mapDispatchToProps: MapDispatchToPropsParam,\r\n mergeProps: MergeProps<\r\n TStateProps,\r\n TDispatchProps,\r\n TOwnProps,\r\n TMergedProps\r\n >,\r\n options?: ConnectOptions\r\n ): InferableComponentEnhancerWithProps\r\n // tslint:enable:no-unnecessary-generics\r\n}\r\n\r\nlet hasWarnedAboutDeprecatedPureOption = false\r\n\r\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\r\nfunction connect<\r\n TStateProps = {},\r\n TDispatchProps = {},\r\n TOwnProps = {},\r\n TMergedProps = {},\r\n State = unknown\r\n>(\r\n mapStateToProps?: MapStateToPropsParam,\r\n mapDispatchToProps?: MapDispatchToPropsParam,\r\n mergeProps?: MergeProps,\r\n {\r\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\r\n // @ts-ignore\r\n pure,\r\n areStatesEqual = strictEqual,\r\n areOwnPropsEqual = shallowEqual,\r\n areStatePropsEqual = shallowEqual,\r\n areMergedPropsEqual = shallowEqual,\r\n\r\n // use React's forwardRef to expose a ref of the wrapped component\r\n forwardRef = false,\r\n\r\n // the context consumer to use\r\n context = ReactReduxContext,\r\n }: ConnectOptions = {}\r\n): unknown {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\r\n hasWarnedAboutDeprecatedPureOption = true\r\n warning(\r\n 'The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component'\r\n )\r\n }\r\n }\r\n\r\n const Context = context\r\n\r\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps)\r\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps)\r\n const initMergeProps = mergePropsFactory(mergeProps)\r\n\r\n const shouldHandleStateChanges = Boolean(mapStateToProps)\r\n\r\n const wrapWithConnect = (\r\n WrappedComponent: ComponentType\r\n ) => {\r\n type WrappedComponentProps = TProps &\r\n ConnectPropsMaybeWithoutContext\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n const isValid = /*#__PURE__*/ isValidElementType(WrappedComponent)\r\n if (!isValid)\r\n throw new Error(\r\n `You must pass a component to the function returned by connect. Instead received ${stringifyComponent(\r\n WrappedComponent\r\n )}`\r\n )\r\n }\r\n\r\n const wrappedComponentName =\r\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\r\n\r\n const displayName = `Connect(${wrappedComponentName})`\r\n\r\n const selectorFactoryOptions: SelectorFactoryOptions<\r\n any,\r\n any,\r\n any,\r\n any,\r\n State\r\n > = {\r\n shouldHandleStateChanges,\r\n displayName,\r\n wrappedComponentName,\r\n WrappedComponent,\r\n // @ts-ignore\r\n initMapStateToProps,\r\n // @ts-ignore\r\n initMapDispatchToProps,\r\n initMergeProps,\r\n areStatesEqual,\r\n areStatePropsEqual,\r\n areOwnPropsEqual,\r\n areMergedPropsEqual,\r\n }\r\n\r\n function ConnectFunction(\r\n props: InternalConnectProps & TOwnProps\r\n ) {\r\n const [propsContext, reactReduxForwardedRef, wrapperProps] =\r\n React.useMemo(() => {\r\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\r\n // and values needed to control behavior (forwarded refs, alternate context instances).\r\n // To maintain the wrapperProps object reference, memoize this destructuring.\r\n const { reactReduxForwardedRef, ...wrapperProps } = props\r\n return [props.context, reactReduxForwardedRef, wrapperProps]\r\n }, [props])\r\n\r\n const ContextToUse: ReactReduxContextInstance = React.useMemo(() => {\r\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\r\n // Memoize the check that determines which context instance we should use.\r\n let ResultContext = Context\r\n if (propsContext?.Consumer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n const isValid = /*#__PURE__*/ isContextConsumer(\r\n // @ts-ignore\r\n \r\n )\r\n if (!isValid) {\r\n throw new Error(\r\n 'You must pass a valid React context consumer as `props.context`'\r\n )\r\n }\r\n ResultContext = propsContext\r\n }\r\n }\r\n return ResultContext\r\n }, [propsContext, Context])\r\n\r\n // Retrieve the store and ancestor subscription via context, if available\r\n const contextValue = React.useContext(ContextToUse)\r\n\r\n // The store _must_ exist as either a prop or in context.\r\n // We'll check to see if it _looks_ like a Redux store first.\r\n // This allows us to pass through a `store` prop that is just a plain value.\r\n const didStoreComeFromProps =\r\n Boolean(props.store) &&\r\n Boolean(props.store!.getState) &&\r\n Boolean(props.store!.dispatch)\r\n const didStoreComeFromContext =\r\n Boolean(contextValue) && Boolean(contextValue!.store)\r\n\r\n if (\r\n process.env.NODE_ENV !== 'production' &&\r\n !didStoreComeFromProps &&\r\n !didStoreComeFromContext\r\n ) {\r\n throw new Error(\r\n `Could not find \"store\" in the context of ` +\r\n `\"${displayName}\". Either wrap the root component in a , ` +\r\n `or pass a custom React context provider to and the corresponding ` +\r\n `React context consumer to ${displayName} in connect options.`\r\n )\r\n }\r\n\r\n // Based on the previous check, one of these must be true\r\n const store: Store = didStoreComeFromProps\r\n ? props.store!\r\n : contextValue!.store\r\n\r\n const getServerState = didStoreComeFromContext\r\n ? contextValue!.getServerState\r\n : store.getState\r\n\r\n const childPropsSelector = React.useMemo(() => {\r\n // The child props selector needs the store reference as an input.\r\n // Re-create this selector whenever the store changes.\r\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions)\r\n }, [store])\r\n\r\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\r\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY\r\n\r\n // This Subscription's source should match where store came from: props vs. context. A component\r\n // connected to the store via props shouldn't use subscription from context, or vice versa.\r\n const subscription = createSubscription(\r\n store,\r\n didStoreComeFromProps ? undefined : contextValue!.subscription\r\n )\r\n\r\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\r\n // the middle of the notification loop, where `subscription` will then be null. This can\r\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\r\n // that have been unsubscribed in the middle of the notification loop.\r\n const notifyNestedSubs =\r\n subscription.notifyNestedSubs.bind(subscription)\r\n\r\n return [subscription, notifyNestedSubs]\r\n }, [store, didStoreComeFromProps, contextValue])\r\n\r\n // Determine what {store, subscription} value should be put into nested context, if necessary,\r\n // and memoize that value to avoid unnecessary context updates.\r\n const overriddenContextValue = React.useMemo(() => {\r\n if (didStoreComeFromProps) {\r\n // This component is directly subscribed to a store from props.\r\n // We don't want descendants reading from this store - pass down whatever\r\n // the existing context value is from the nearest connected ancestor.\r\n return contextValue!\r\n }\r\n\r\n // Otherwise, put this component's subscription instance into context, so that\r\n // connected descendants won't update until after this component is done\r\n return {\r\n ...contextValue,\r\n subscription,\r\n } as ReactReduxContextValue\r\n }, [didStoreComeFromProps, contextValue, subscription])\r\n\r\n // Set up refs to coordinate values between the subscription effect and the render logic\r\n const lastChildProps = React.useRef()\r\n const lastWrapperProps = React.useRef(wrapperProps)\r\n const childPropsFromStoreUpdate = React.useRef()\r\n const renderIsScheduled = React.useRef(false)\r\n const isProcessingDispatch = React.useRef(false)\r\n const isMounted = React.useRef(false)\r\n\r\n const latestSubscriptionCallbackError = React.useRef()\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n isMounted.current = true\r\n return () => {\r\n isMounted.current = false\r\n }\r\n }, [])\r\n\r\n const actualChildPropsSelector = React.useMemo(() => {\r\n const selector = () => {\r\n // Tricky logic here:\r\n // - This render may have been triggered by a Redux store update that produced new child props\r\n // - However, we may have gotten new wrapper props after that\r\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\r\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\r\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\r\n if (\r\n childPropsFromStoreUpdate.current &&\r\n wrapperProps === lastWrapperProps.current\r\n ) {\r\n return childPropsFromStoreUpdate.current\r\n }\r\n\r\n // TODO We're reading the store directly in render() here. Bad idea?\r\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\r\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\r\n // to determine what the child props should be.\r\n return childPropsSelector(store.getState(), wrapperProps)\r\n }\r\n return selector\r\n }, [store, wrapperProps])\r\n\r\n // We need this to execute synchronously every time we re-render. However, React warns\r\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\r\n // just useEffect instead to avoid the warning, since neither will run anyway.\r\n\r\n const subscribeForReact = React.useMemo(() => {\r\n const subscribe = (reactListener: () => void) => {\r\n if (!subscription) {\r\n return () => {}\r\n }\r\n\r\n return subscribeUpdates(\r\n shouldHandleStateChanges,\r\n store,\r\n subscription,\r\n // @ts-ignore\r\n childPropsSelector,\r\n lastWrapperProps,\r\n lastChildProps,\r\n renderIsScheduled,\r\n isMounted,\r\n childPropsFromStoreUpdate,\r\n notifyNestedSubs,\r\n reactListener\r\n )\r\n }\r\n\r\n return subscribe\r\n }, [subscription])\r\n\r\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\r\n lastWrapperProps,\r\n lastChildProps,\r\n renderIsScheduled,\r\n wrapperProps,\r\n childPropsFromStoreUpdate,\r\n notifyNestedSubs,\r\n ])\r\n\r\n let actualChildProps: Record\r\n\r\n try {\r\n actualChildProps = useSyncExternalStore(\r\n // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\r\n subscribeForReact,\r\n // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\r\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\r\n actualChildPropsSelector,\r\n getServerState\r\n ? () => childPropsSelector(getServerState(), wrapperProps)\r\n : actualChildPropsSelector\r\n )\r\n } catch (err) {\r\n if (latestSubscriptionCallbackError.current) {\r\n ;(\r\n err as Error\r\n ).message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`\r\n }\r\n\r\n throw err\r\n }\r\n\r\n useIsomorphicLayoutEffect(() => {\r\n latestSubscriptionCallbackError.current = undefined\r\n childPropsFromStoreUpdate.current = undefined\r\n lastChildProps.current = actualChildProps\r\n })\r\n\r\n // Now that all that's done, we can finally try to actually render the child component.\r\n // We memoize the elements for the rendered child component as an optimization.\r\n const renderedWrappedComponent = React.useMemo(() => {\r\n return (\r\n // @ts-ignore\r\n \r\n )\r\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps])\r\n\r\n // If React sees the exact same element reference as last time, it bails out of re-rendering\r\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\r\n const renderedChild = React.useMemo(() => {\r\n if (shouldHandleStateChanges) {\r\n // If this component is subscribed to store updates, we need to pass its own\r\n // subscription instance down to our descendants. That means rendering the same\r\n // Context instance, and putting a different value into the context.\r\n return (\r\n \r\n {renderedWrappedComponent}\r\n \r\n )\r\n }\r\n\r\n return renderedWrappedComponent\r\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue])\r\n\r\n return renderedChild\r\n }\r\n\r\n const _Connect = React.memo(ConnectFunction)\r\n\r\n type ConnectedWrapperComponent = typeof _Connect & {\r\n WrappedComponent: typeof WrappedComponent\r\n }\r\n\r\n // Add a hacky cast to get the right output type\r\n const Connect = _Connect as unknown as ConnectedComponent<\r\n typeof WrappedComponent,\r\n WrappedComponentProps\r\n >\r\n Connect.WrappedComponent = WrappedComponent\r\n Connect.displayName = ConnectFunction.displayName = displayName\r\n\r\n if (forwardRef) {\r\n const _forwarded = React.forwardRef(function forwardConnectRef(\r\n props,\r\n ref\r\n ) {\r\n // @ts-ignore\r\n return \r\n })\r\n\r\n const forwarded = _forwarded as ConnectedWrapperComponent\r\n forwarded.displayName = displayName\r\n forwarded.WrappedComponent = WrappedComponent\r\n return /*#__PURE__*/ hoistStatics(forwarded, WrappedComponent)\r\n }\r\n\r\n return /*#__PURE__*/ hoistStatics(Connect, WrappedComponent)\r\n }\r\n\r\n return wrapWithConnect\r\n}\r\n\r\nexport default connect as Connect\r\n","export default function ArrowRightIcon() {\n return (\n \n \n \n );\n}\n","export default function CopeIcon() {\n return (\n \n \n \n \n );\n}\n","export default function DislikeIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","export default function LikeIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","export default function RefreshIcon() {\n return (\n \n \n \n );\n}\n","export default function TickIcon() {\n return (\n \n \n \n \n );\n}\n","import ReactGA from \"react-ga4\";\n// import { Guid } from \"js-guid\";\nimport axios from \"axios\";\n\n/**\n * Function initialize GA\n */\nexport const initializeGA = () => {\n if (!process.env.REACT_APP_GA_ID) return false;\n ReactGA.initialize(process.env.REACT_APP_GA_ID);\n console.log(\"ReactGA.initialize\", process.env.REACT_APP_GA_ID);\n return true;\n};\n\n/**\n * Function Track Event\n * @member name - Event name\n * @member params - Event parameters\n */\nexport const TrackEvent = (apiLog, name, params) => {\n // in case we will have other tracking platforms\n // add a layer of wrapper to GA\n // ReactGA.event({\n // category: \"TrackEvent\",\n // action: name,\n // label: params, // optional\n // nonInteraction: true, // optional, true/false\n // });\n // ReactGA.event({\n // ...params,\n // category: \"TrackEvent\",\n // action: name,\n // nonInteraction: true, // optional, true/false\n // });\n console.log(\"apiLog\", apiLog);\n ReactGA.event(name, params);\n console.log(\n \"[Track Event] Name: \" + name + \" | Params: /\" + JSON.stringify(params)\n );\n};\n\nexport const getCookie = (cookieName) => {\n const name = cookieName + \"=\";\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(\";\");\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i].trim();\n if (cookie.indexOf(name) === 0) {\n return cookie.substring(name.length, cookie.length);\n }\n }\n\n return null; // Cookie not found\n};\nexport const setCookie = (cookieName, cookieValue, expirationDays = null) => {\n if (expirationDays !== null) {\n const d = new Date();\n d.setTime(d.getTime() + expirationDays * 24 * 60 * 60 * 1000);\n const expires = \"expires=\" + d.toUTCString();\n document.cookie =\n cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\";\n } else {\n document.cookie = `${cookieName}=${cookieValue}; path=/`;\n }\n};\n\nexport const chatWithGPT = async (userInput, apiEndpoint, history = []) => {\n // const apiEndpoint = process.env.REACT_APP_API_URL;\n // const headerConfig = window?.ai?.api?.headerConfig || {};\n const headers = {\n \"Content-Type\": \"application/json\",\n \"Ocp-Apim-Subscription-Key\": getCookie(\"Ocp-Apim-Subscription-Key\"),\n };\n\n const sessionId = getCookie(\"hfAIChatSession\") || \"\";\n const data = {\n question: userInput,\n history,\n ...(sessionId ? { session_id: sessionId } : {}),\n };\n try {\n const response = await axios.post(apiEndpoint, data, {\n headers,\n });\n\n if (response.data.session_id) {\n setCookie(\"hfAIChatSession\", response.data.session_id);\n }\n return {\n question: response.data.question.trim(),\n response: response.data.response.trim(),\n sources: response.data.sources || [],\n question_keywords: response.data?.question_keywords?.split(\"|\") || [],\n related: response.data.related || [],\n sessionId: response.data.session_id,\n id: response.data.message_id,\n // user: false,\n };\n } catch (error) {\n console.error(\"Error communicating with the API:\", error.message);\n return \"\";\n }\n};\n\nexport const chatWithGPTStreaming = async (\n userInput,\n apiEndpoint,\n history = [],\n callbackProcess,\n callbackDone\n) => {\n // Prepare data\n const sessionId = getCookie(\"hfAIChatSession\") || \"\";\n const headers = {\n \"Content-Type\": \"application/json\",\n \"Content-Encoding\": \"none\",\n \"Ocp-Apim-Subscription-Key\": getCookie(\"Ocp-Apim-Subscription-Key\"),\n Accept: \"text/event-stream\",\n };\n\n const payload = JSON.stringify({\n question: userInput,\n history,\n ...(sessionId ? { session_id: sessionId } : {}),\n });\n\n try {\n // Call API Streaming\n const response = await fetch(apiEndpoint, {\n method: \"POST\",\n headers: headers,\n body: payload,\n });\n\n if (!response.ok) {\n throw new Error(\"Failed to fetch data\");\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder(\"utf-8\");\n\n let buffer = \"\",\n tempMessage = \"\",\n tempMessageFromAPI = \"\",\n currentIndex = 0, // To handle some case edge case\n listMessage = [],\n isDone = false,\n isReference = false,\n finalMessage = {\n related: [],\n sources: [],\n question_keywords: [],\n id: \"-1\",\n },\n intervalTyping,\n errorMessage = \"\",\n noAnswerIndicator = [];\n\n await Promise.all([\n // Handle streaming data\n new Promise(async (resolve, reject) => {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n isDone = true;\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n\n // Split buffer by newlines to get individual events\n const lines = buffer.split(\"\\n\\n\");\n buffer = lines.pop(); // Keep the last incomplete line in the buffer\n\n // Process complete lines (events)\n // eslint-disable-next-line no-loop-func\n lines.forEach((line) => {\n const [dataText, eventTypeText] = line.split(\"\\n\");\n\n const type = eventTypeText.replace(\"event: \", \"\"); // extra info | answer | related\n const data = JSON.parse(dataText.replace(\"data: \", \"\"));\n\n switch (type) {\n case \"error\":\n errorMessage = data?.message;\n break;\n\n case \"answer\":\n const message = data?.choices?.[0].delta.content || \"\";\n\n tempMessageFromAPI += message;\n\n if (/(\\s)*\\[.*/.test(message) || tempMessage) {\n tempMessage += message;\n }\n if (/(\\s)*\\[.*\\]/.test(tempMessage)) {\n // Template [References: (\\d+)\\] to detect if sources are using to response question\n const pattern = /(\\s)*\\[References: (\\d+)\\]/;\n const match = tempMessage.match(pattern);\n if (match) {\n isReference = +match?.[2] > 0;\n console.log(\"References: \", match, match?.[2]);\n }\n\n // Template [source ]\n tempMessage = tempMessage\n .replace(pattern, \"\")\n .replace(/(\\s)*\\[(source (\\d+)(, )*)+\\]/, \"\")\n .replace(/(\\s)*\\[(Source (\\d+)(, )*)+\\]/, \"\");\n\n listMessage.push(tempMessage);\n\n tempMessage = \"\";\n } else if (!tempMessage) {\n listMessage.push(message);\n }\n\n break;\n\n case \"related\":\n finalMessage.related =\n data?.choices?.[0].context.followup_questions || [];\n finalMessage.id = data?.message_id;\n\n break;\n\n case \"extra info\":\n const sources = [],\n topShow = data?.choices[0].context.top_show;\n\n noAnswerIndicator =\n data?.choices[0].context?.no_answer_indicator || [];\n\n const citations = data?.choices[0].context?.citations || [];\n\n citations.forEach((item) => {\n if (!sources.find((s) => s.url === item.url)) {\n sources.push(item);\n }\n });\n\n finalMessage.sources = sources.slice(0, topShow);\n\n finalMessage.question_keywords =\n data?.choices[0].context.keywords || [];\n\n break;\n\n default:\n break;\n }\n });\n }\n\n resolve();\n }),\n // Handle typing writer behavior\n new Promise(async (resolve, reject) => {\n clearInterval(intervalTyping);\n\n intervalTyping = setInterval(() => {\n if (currentIndex < listMessage.length) {\n callbackProcess(listMessage[currentIndex]);\n currentIndex += 1;\n }\n\n if (isDone && currentIndex >= listMessage.length) {\n clearInterval(intervalTyping);\n\n // let sourceFromResponse = isReference ? finalMessage.sources : [];\n console.log(\"Source: \", finalMessage.sources);\n console.log(\"noAnswerIndicator: \", noAnswerIndicator);\n let sourceFromResponse = finalMessage.sources;\n\n if (\n noAnswerIndicator.length &&\n noAnswerIndicator.some(\n (t) =>\n tempMessageFromAPI.toLowerCase().indexOf(t.toLowerCase()) >= 0\n )\n ) {\n sourceFromResponse = [];\n }\n\n callbackDone({\n ...finalMessage,\n sources: sourceFromResponse,\n ...(errorMessage ? { response: errorMessage } : {}),\n });\n\n console.log(\"Text from API: \\n\" + tempMessageFromAPI);\n\n resolve();\n }\n }, 80);\n }),\n ]);\n } catch (error) {\n console.error(\"Error communicating with the API:\", error);\n return \"\";\n }\n};\n\nexport const formatDate = (dateString, options = {}) => {\n const date = new Date(dateString);\n\n const defaultOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n // hour: 'numeric',\n // minute: 'numeric',\n // second: 'numeric',\n // timeZoneName: 'short'\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-UK\", {\n ...defaultOptions,\n ...options,\n }).format(date);\n return formattedDate;\n};\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.5\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import { getCookie } from \"./util\";\nimport axios from \"axios\";\nimport { setCookie } from \"./util\";\n\n/**\n *\n * @param {Object} body\n * @param {\"link_click\"|\"button_click\"|\"heartbeat\"} body.interaction_type - Required\n * @param {string} body.interaction_content - Required\n * @param {GUID} body.message_id\n */\nasync function trackInteraction(body) {\n try {\n // const headerConfig = window?.ai?.api?.headerConfig || {};\n\n const headers = {\n \"Content-Type\": \"application/json\",\n \"Ocp-Apim-Subscription-Key\": getCookie(\"Ocp-Apim-Subscription-Key\"),\n };\n\n const sessionId = getCookie(\"hfAIChatSession\") || \"\";\n\n const data = {\n interaction_type: body[\"interaction_type\"],\n interaction_content: body[\"interaction_content\"],\n message_id: body[\"message_id\"],\n reference_url: body?.[\"reference_url\"] || document.referrer,\n ...(sessionId ? { session_id: sessionId } : {}),\n // event_type: body?.[\"event_type\"] || \"interaction\",\n // device_os: detectOS(),\n // device_type: detectDeviceType(),\n };\n\n const response = await axios.post(window.ai?.api?.integration, data, {\n headers,\n });\n\n if (response.data.session_id) {\n setCookie(\"hfAIChatSession\", response.data.session_id);\n }\n } catch (error) {}\n}\n\nexport async function trackHeartbeat() {\n await trackInteraction({\n interaction_type: \"heartbeat\",\n interaction_content: new Date().toISOString(),\n });\n}\n\nexport async function trackButton({ label, message_id, ...body }) {\n await trackInteraction({\n interaction_content: label,\n interaction_type: \"button_click\",\n message_id: message_id,\n ...body,\n });\n}\n\nexport async function trackLink({ link, message_id, ...body }) {\n await trackInteraction({\n interaction_content: link,\n interaction_type: \"link_click\",\n message_id: message_id,\n ...body,\n });\n}\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tObject.entries(obj).forEach(([key, value]) => {\n\t\t\titer(key, value, obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): ArchType {\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\n\t\t: Array.isArray(thing)\n\t\t? ArchType.Array\n\t\t: isMap(thing)\n\t\t? ArchType.Map\n\t\t: isSet(thing)\n\t\t? ArchType.Set\n\t\t: ArchType.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchType.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchType.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchType.Map) thing.set(propOrOldValue, value)\n\telse if (t === ArchType.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any, strict: boolean) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tif (!strict && isPlainObject(base)) {\n\t\tif (!getPrototypeOf(base)) {\n\t\t\tconst obj = Object.create(null)\n\t\t\treturn Object.assign(obj, base)\n\t\t}\n\t\treturn {...base}\n\t}\n\n\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = Reflect.ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (_key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tArchType,\n\tgetPlugin\n} from \"../internal\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result = state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(value, state))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ArchType.Array || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: boolean = false\n\n\tconstructor(config?: {autoFreeze?: boolean; useStrictShallowCopy?: boolean}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: boolean) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: createProxyProxy(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","import { runIdentityFunctionCheck } from './devModeChecks/identityFunctionCheck'\r\nimport { runInputStabilityCheck } from './devModeChecks/inputStabilityCheck'\r\nimport { globalDevModeChecks } from './devModeChecks/setGlobalDevModeChecks'\r\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\r\nimport type {\r\n DevModeChecks,\r\n Selector,\r\n SelectorArray,\r\n DevModeChecksExecutionInfo\r\n} from './types'\r\n\r\nexport const NOT_FOUND = 'NOT_FOUND'\r\nexport type NOT_FOUND_TYPE = typeof NOT_FOUND\r\n\r\n/**\r\n * Assert that the provided value is a function. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param func - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsFunction(\r\n func: unknown,\r\n errorMessage = `expected a function, instead received ${typeof func}`\r\n): asserts func is FunctionType {\r\n if (typeof func !== 'function') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided value is an object. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param object - The value to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsObject>(\r\n object: unknown,\r\n errorMessage = `expected an object, instead received ${typeof object}`\r\n): asserts object is ObjectType {\r\n if (typeof object !== 'object') {\r\n throw new TypeError(errorMessage)\r\n }\r\n}\r\n\r\n/**\r\n * Assert that the provided array is an array of functions. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param array - The array to be checked.\r\n * @param errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsArrayOfFunctions(\r\n array: unknown[],\r\n errorMessage = `expected all items to be functions, instead received the following types: `\r\n): asserts array is FunctionType[] {\r\n if (\r\n !array.every((item): item is FunctionType => typeof item === 'function')\r\n ) {\r\n const itemTypes = array\r\n .map(item =>\r\n typeof item === 'function'\r\n ? `function ${item.name || 'unnamed'}()`\r\n : typeof item\r\n )\r\n .join(', ')\r\n throw new TypeError(`${errorMessage}[${itemTypes}]`)\r\n }\r\n}\r\n\r\n/**\r\n * Ensure that the input is an array. If it's already an array, it's returned as is.\r\n * If it's not an array, it will be wrapped in a new array.\r\n *\r\n * @param item - The item to be checked.\r\n * @returns An array containing the input item. If the input is already an array, it's returned without modification.\r\n */\r\nexport const ensureIsArray = (item: unknown) => {\r\n return Array.isArray(item) ? item : [item]\r\n}\r\n\r\n/**\r\n * Extracts the \"dependencies\" / \"input selectors\" from the arguments of `createSelector`.\r\n *\r\n * @param createSelectorArgs - Arguments passed to `createSelector` as an array.\r\n * @returns An array of \"input selectors\" / \"dependencies\".\r\n * @throws A `TypeError` if any of the input selectors is not function.\r\n */\r\nexport function getDependencies(createSelectorArgs: unknown[]) {\r\n const dependencies = Array.isArray(createSelectorArgs[0])\r\n ? createSelectorArgs[0]\r\n : createSelectorArgs\r\n\r\n assertIsArrayOfFunctions(\r\n dependencies,\r\n `createSelector expects all input-selectors to be functions, but received the following types: `\r\n )\r\n\r\n return dependencies as SelectorArray\r\n}\r\n\r\n/**\r\n * Runs each input selector and returns their collective results as an array.\r\n *\r\n * @param dependencies - An array of \"dependencies\" or \"input selectors\".\r\n * @param inputSelectorArgs - An array of arguments being passed to the input selectors.\r\n * @returns An array of input selector results.\r\n */\r\nexport function collectInputSelectorResults(\r\n dependencies: SelectorArray,\r\n inputSelectorArgs: unknown[] | IArguments\r\n) {\r\n const inputSelectorResults = []\r\n const { length } = dependencies\r\n for (let i = 0; i < length; i++) {\r\n // @ts-ignore\r\n // apply arguments instead of spreading and mutate a local list of params for performance.\r\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs))\r\n }\r\n return inputSelectorResults\r\n}\r\n\r\n/**\r\n * Retrieves execution information for development mode checks.\r\n *\r\n * @param devModeChecks - Custom Settings for development mode checks. These settings will override the global defaults.\r\n * @param firstRun - Indicates whether it is the first time the selector has run.\r\n * @returns An object containing the execution information for each development mode check.\r\n */\r\nexport const getDevModeChecksExecutionInfo = (\r\n firstRun: boolean,\r\n devModeChecks: Partial\r\n) => {\r\n const { identityFunctionCheck, inputStabilityCheck } = {\r\n ...globalDevModeChecks,\r\n ...devModeChecks\r\n }\r\n return {\r\n identityFunctionCheck: {\r\n shouldRun:\r\n identityFunctionCheck === 'always' ||\r\n (identityFunctionCheck === 'once' && firstRun),\r\n run: runIdentityFunctionCheck\r\n },\r\n inputStabilityCheck: {\r\n shouldRun:\r\n inputStabilityCheck === 'always' ||\r\n (inputStabilityCheck === 'once' && firstRun),\r\n run: runInputStabilityCheck\r\n }\r\n } satisfies DevModeChecksExecutionInfo\r\n}\r\n","// Original source:\r\n// - https://github.com/simonihmig/tracked-redux/blob/master/packages/tracked-redux/src/-private/proxy.ts\r\n\r\nimport type { Node, Tag } from './tracking'\r\nimport {\r\n consumeCollection,\r\n consumeTag,\r\n createTag,\r\n dirtyCollection,\r\n dirtyTag\r\n} from './tracking'\r\n\r\nexport const REDUX_PROXY_LABEL = Symbol()\r\n\r\nlet nextId = 0\r\n\r\nconst proto = Object.getPrototypeOf({})\r\n\r\nclass ObjectTreeNode> implements Node {\r\n proxy: T = new Proxy(this, objectProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {} as Record\r\n children = {} as Record\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst objectProxyHandler = {\r\n get(node: Node, key: string | symbol): unknown {\r\n function calculateResult() {\r\n const { value } = node\r\n\r\n const childValue = Reflect.get(value, key)\r\n\r\n if (typeof key === 'symbol') {\r\n return childValue\r\n }\r\n\r\n if (key in proto) {\r\n return childValue\r\n }\r\n\r\n if (typeof childValue === 'object' && childValue !== null) {\r\n let childNode = node.children[key]\r\n\r\n if (childNode === undefined) {\r\n childNode = node.children[key] = createNode(childValue)\r\n }\r\n\r\n if (childNode.tag) {\r\n consumeTag(childNode.tag)\r\n }\r\n\r\n return childNode.proxy\r\n } else {\r\n let tag = node.tags[key]\r\n\r\n if (tag === undefined) {\r\n tag = node.tags[key] = createTag()\r\n tag.value = childValue\r\n }\r\n\r\n consumeTag(tag)\r\n\r\n return childValue\r\n }\r\n }\r\n const res = calculateResult()\r\n return res\r\n },\r\n\r\n ownKeys(node: Node): ArrayLike {\r\n consumeCollection(node)\r\n return Reflect.ownKeys(node.value)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n node: Node,\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return Reflect.getOwnPropertyDescriptor(node.value, prop)\r\n },\r\n\r\n has(node: Node, prop: string | symbol): boolean {\r\n return Reflect.has(node.value, prop)\r\n }\r\n}\r\n\r\nclass ArrayTreeNode> implements Node {\r\n proxy: T = new Proxy([this], arrayProxyHandler) as unknown as T\r\n tag = createTag()\r\n tags = {}\r\n children = {}\r\n collectionTag = null\r\n id = nextId++\r\n\r\n constructor(public value: T) {\r\n this.value = value\r\n this.tag.value = value\r\n }\r\n}\r\n\r\nconst arrayProxyHandler = {\r\n get([node]: [Node], key: string | symbol): unknown {\r\n if (key === 'length') {\r\n consumeCollection(node)\r\n }\r\n\r\n return objectProxyHandler.get(node, key)\r\n },\r\n\r\n ownKeys([node]: [Node]): ArrayLike {\r\n return objectProxyHandler.ownKeys(node)\r\n },\r\n\r\n getOwnPropertyDescriptor(\r\n [node]: [Node],\r\n prop: string | symbol\r\n ): PropertyDescriptor | undefined {\r\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop)\r\n },\r\n\r\n has([node]: [Node], prop: string | symbol): boolean {\r\n return objectProxyHandler.has(node, prop)\r\n }\r\n}\r\n\r\nexport function createNode | Record>(\r\n value: T\r\n): Node {\r\n if (Array.isArray(value)) {\r\n return new ArrayTreeNode(value)\r\n }\r\n\r\n return new ObjectTreeNode(value) as Node\r\n}\r\n\r\nconst keysMap = new WeakMap<\r\n Array | Record,\r\n Set\r\n>()\r\n\r\nexport function updateNode | Record>(\r\n node: Node,\r\n newValue: T\r\n): void {\r\n const { value, tags, children } = node\r\n\r\n node.value = newValue\r\n\r\n if (\r\n Array.isArray(value) &&\r\n Array.isArray(newValue) &&\r\n value.length !== newValue.length\r\n ) {\r\n dirtyCollection(node)\r\n } else {\r\n if (value !== newValue) {\r\n let oldKeysSize = 0\r\n let newKeysSize = 0\r\n let anyKeysAdded = false\r\n\r\n for (const _key in value) {\r\n oldKeysSize++\r\n }\r\n\r\n for (const key in newValue) {\r\n newKeysSize++\r\n if (!(key in value)) {\r\n anyKeysAdded = true\r\n break\r\n }\r\n }\r\n\r\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize\r\n\r\n if (isDifferent) {\r\n dirtyCollection(node)\r\n }\r\n }\r\n }\r\n\r\n for (const key in tags) {\r\n const childValue = (value as Record)[key]\r\n const newChildValue = (newValue as Record)[key]\r\n\r\n if (childValue !== newChildValue) {\r\n dirtyCollection(node)\r\n dirtyTag(tags[key], newChildValue)\r\n }\r\n\r\n if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n delete tags[key]\r\n }\r\n }\r\n\r\n for (const key in children) {\r\n const childNode = children[key]\r\n const newChildValue = (newValue as Record)[key]\r\n\r\n const childValue = childNode.value\r\n\r\n if (childValue === newChildValue) {\r\n continue\r\n } else if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n updateNode(childNode, newChildValue as Record)\r\n } else {\r\n deleteNode(childNode)\r\n delete children[key]\r\n }\r\n }\r\n}\r\n\r\nfunction deleteNode(node: Node): void {\r\n if (node.tag) {\r\n dirtyTag(node.tag, null)\r\n }\r\n dirtyCollection(node)\r\n for (const key in node.tags) {\r\n dirtyTag(node.tags[key], null)\r\n }\r\n for (const key in node.children) {\r\n deleteNode(node.children[key])\r\n }\r\n}\r\n","// Original source:\r\n// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js\r\n\r\nimport type {\r\n AnyFunction,\r\n DefaultMemoizeFields,\r\n EqualityFn,\r\n Simplify\r\n} from './types'\r\n\r\nclass StrongRef {\r\n constructor(private value: T) {}\r\n deref() {\r\n return this.value\r\n }\r\n}\r\n\r\nconst Ref =\r\n typeof WeakRef !== 'undefined'\r\n ? WeakRef\r\n : (StrongRef as unknown as typeof WeakRef)\r\n\r\nconst UNTERMINATED = 0\r\nconst TERMINATED = 1\r\n\r\ninterface UnterminatedCacheNode {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 0\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: void\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap>\r\n /**\r\n * Primitive cache, a regular Map where primitive arguments are stored.\r\n */\r\n p: null | Map>\r\n}\r\n\r\ninterface TerminatedCacheNode {\r\n /**\r\n * Status, represents whether the cached computation returned a value or threw an error.\r\n */\r\n s: 1\r\n /**\r\n * Value, either the cached result or an error, depending on status.\r\n */\r\n v: T\r\n /**\r\n * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n */\r\n o: null | WeakMap>\r\n /**\r\n * Primitive cache, a regular `Map` where primitive arguments are stored.\r\n */\r\n p: null | Map>\r\n}\r\n\r\ntype CacheNode = TerminatedCacheNode | UnterminatedCacheNode\r\n\r\nfunction createCacheNode(): CacheNode {\r\n return {\r\n s: UNTERMINATED,\r\n v: undefined,\r\n o: null,\r\n p: null\r\n }\r\n}\r\n\r\n/**\r\n * Configuration options for a memoization function utilizing `WeakMap` for\r\n * its caching mechanism.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport interface WeakMapMemoizeOptions {\r\n /**\r\n * If provided, used to compare a newly generated output value against previous values in the cache.\r\n * If a match is found, the old value is returned. This addresses the common\r\n * ```ts\r\n * todos.map(todo => todo.id)\r\n * ```\r\n * use case, where an update to another field in the original data causes a recalculation\r\n * due to changed references, but the output is still effectively the same.\r\n *\r\n * @since 5.0.0\r\n */\r\n resultEqualityCheck?: EqualityFn\r\n}\r\n\r\n/**\r\n * Creates a tree of `WeakMap`-based cache nodes based on the identity of the\r\n * arguments it's been called with (in this case, the extracted values from your input selectors).\r\n * This allows `weakMapMemoize` to have an effectively infinite cache size.\r\n * Cache results will be kept in memory as long as references to the arguments still exist,\r\n * and then cleared out as the arguments are garbage-collected.\r\n *\r\n * __Design Tradeoffs for `weakMapMemoize`:__\r\n * - Pros:\r\n * - It has an effectively infinite cache size, but you have no control over\r\n * how long values are kept in cache as it's based on garbage collection and `WeakMap`s.\r\n * - Cons:\r\n * - There's currently no way to alter the argument comparisons.\r\n * They're based on strict reference equality.\r\n * - It's roughly the same speed as `lruMemoize`, although likely a fraction slower.\r\n *\r\n * __Use Cases for `weakMapMemoize`:__\r\n * - This memoizer is likely best used for cases where you need to call the\r\n * same selector instance with many different arguments, such as a single\r\n * selector instance that is used in a list item component and called with\r\n * item IDs like:\r\n * ```ts\r\n * useSelector(state => selectSomeData(state, props.category))\r\n * ```\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * Using `createSelector`\r\n * ```ts\r\n * import { createSelector, weakMapMemoize } from 'reselect'\r\n *\r\n * interface RootState {\r\n * items: { id: number; category: string; name: string }[]\r\n * }\r\n *\r\n * const selectItemsByCategory = createSelector(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category),\r\n * {\r\n * memoize: weakMapMemoize,\r\n * argsMemoize: weakMapMemoize\r\n * }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * Using `createSelectorCreator`\r\n * ```ts\r\n * import { createSelectorCreator, weakMapMemoize } from 'reselect'\r\n *\r\n * const createSelectorWeakMap = createSelectorCreator({ memoize: weakMapMemoize, argsMemoize: weakMapMemoize })\r\n *\r\n * const selectItemsByCategory = createSelectorWeakMap(\r\n * [\r\n * (state: RootState) => state.items,\r\n * (state: RootState, category: string) => category\r\n * ],\r\n * (items, category) => items.filter(item => item.category === category)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/weakMapMemoize `weakMapMemoize`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function weakMapMemoize(\r\n func: Func,\r\n options: WeakMapMemoizeOptions> = {}\r\n) {\r\n let fnNode = createCacheNode()\r\n const { resultEqualityCheck } = options\r\n\r\n let lastResult: WeakRef | undefined\r\n\r\n let resultsCount = 0\r\n\r\n function memoized() {\r\n let cacheNode = fnNode\r\n const { length } = arguments\r\n for (let i = 0, l = length; i < l; i++) {\r\n const arg = arguments[i]\r\n if (\r\n typeof arg === 'function' ||\r\n (typeof arg === 'object' && arg !== null)\r\n ) {\r\n // Objects go into a WeakMap\r\n let objectCache = cacheNode.o\r\n if (objectCache === null) {\r\n cacheNode.o = objectCache = new WeakMap()\r\n }\r\n const objectNode = objectCache.get(arg)\r\n if (objectNode === undefined) {\r\n cacheNode = createCacheNode()\r\n objectCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = objectNode\r\n }\r\n } else {\r\n // Primitives go into a regular Map\r\n let primitiveCache = cacheNode.p\r\n if (primitiveCache === null) {\r\n cacheNode.p = primitiveCache = new Map()\r\n }\r\n const primitiveNode = primitiveCache.get(arg)\r\n if (primitiveNode === undefined) {\r\n cacheNode = createCacheNode()\r\n primitiveCache.set(arg, cacheNode)\r\n } else {\r\n cacheNode = primitiveNode\r\n }\r\n }\r\n }\r\n\r\n const terminatedNode = cacheNode as unknown as TerminatedCacheNode\r\n\r\n let result\r\n\r\n if (cacheNode.s === TERMINATED) {\r\n result = cacheNode.v\r\n } else {\r\n // Allow errors to propagate\r\n result = func.apply(null, arguments as unknown as any[])\r\n resultsCount++\r\n }\r\n\r\n terminatedNode.s = TERMINATED\r\n\r\n if (resultEqualityCheck) {\r\n const lastResultValue = lastResult?.deref() ?? lastResult\r\n if (\r\n lastResultValue != null &&\r\n resultEqualityCheck(lastResultValue as ReturnType, result)\r\n ) {\r\n result = lastResultValue\r\n resultsCount !== 0 && resultsCount--\r\n }\r\n\r\n const needsWeakRef =\r\n (typeof result === 'object' && result !== null) ||\r\n typeof result === 'function'\r\n lastResult = needsWeakRef ? new Ref(result) : result\r\n }\r\n terminatedNode.v = result\r\n return result\r\n }\r\n\r\n memoized.clearCache = () => {\r\n fnNode = createCacheNode()\r\n memoized.resetResultsCount()\r\n }\r\n\r\n memoized.resultsCount = () => resultsCount\r\n\r\n memoized.resetResultsCount = () => {\r\n resultsCount = 0\r\n }\r\n\r\n return memoized as Func & Simplify\r\n}\r\n","import { weakMapMemoize } from './weakMapMemoize'\r\n\r\nimport type {\r\n Combiner,\r\n CreateSelectorOptions,\r\n DropFirstParameter,\r\n ExtractMemoizerFields,\r\n GetParamsFromSelectors,\r\n GetStateFromSelectors,\r\n InterruptRecursion,\r\n OutputSelector,\r\n Selector,\r\n SelectorArray,\r\n SetRequired,\r\n Simplify,\r\n UnknownMemoizer\r\n} from './types'\r\n\r\nimport {\r\n assertIsFunction,\r\n collectInputSelectorResults,\r\n ensureIsArray,\r\n getDependencies,\r\n getDevModeChecksExecutionInfo\r\n} from './utils'\r\n\r\n/**\r\n * An instance of `createSelector`, customized with a given memoize implementation.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSelectorFunction<\r\n MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n> {\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments and a `combiner` function.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://github.com/reduxjs/reselect#createselectorinputselectors--inputselectors-resultfunc-createselectoroptions createSelector}\r\n */\r\n (\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments, a `combiner` function and an `options` object.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors as an array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://github.com/reduxjs/reselect#createselectorinputselectors--inputselectors-resultfunc-createselectoroptions createSelector}\r\n */\r\n <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: InputSelectors,\r\n combiner: Combiner,\r\n createSelectorOptions: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ]\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n\r\n /**\r\n * Creates a memoized selector function.\r\n *\r\n * @param inputSelectors - An array of input selectors.\r\n * @param combiner - A function that Combines the input selectors and returns an output selector. Otherwise known as the result function.\r\n * @param createSelectorOptions - An optional options object that allows for further customization per selector.\r\n * @returns A memoized output selector.\r\n *\r\n * @template InputSelectors - The type of the input selectors array.\r\n * @template Result - The return type of the `combiner` as well as the output selector.\r\n * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n *\r\n * @see {@link https://github.com/reduxjs/reselect#createselectorinputselectors--inputselectors-resultfunc-createselectoroptions createSelector}\r\n */\r\n <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n inputSelectors: [...InputSelectors],\r\n combiner: Combiner,\r\n createSelectorOptions?: Simplify<\r\n CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n >\r\n ): OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > &\r\n InterruptRecursion\r\n}\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param options - An options object containing the `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). It also provides additional options for customizing memoization. While the `memoize` property is mandatory, the rest are optional.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator({\r\n * memoize: customMemoize, // Function to be used to memoize `resultFunc`\r\n * memoizeOptions: [memoizeOption1, memoizeOption2], // Options passed to `customMemoize` as the second argument onwards\r\n * argsMemoize: customArgsMemoize, // Function to be used to memoize the selector's arguments\r\n * argsMemoizeOptions: [argsMemoizeOption1, argsMemoizeOption2] // Options passed to `customArgsMemoize` as the second argument onwards\r\n * })\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n *\r\n * customSelector(\r\n * ...selectorArgs // Will be memoized by `customArgsMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-options-since-500 `createSelectorCreator`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n>(\r\n options: Simplify<\r\n SetRequired<\r\n CreateSelectorOptions<\r\n typeof weakMapMemoize,\r\n typeof weakMapMemoize,\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >,\r\n 'memoize'\r\n >\r\n >\r\n): CreateSelectorFunction\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param memoize - The `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator(customMemoize, // Function to be used to memoize `resultFunc`\r\n * option1, // Will be passed as second argument to `customMemoize`\r\n * option2, // Will be passed as third argument to `customMemoize`\r\n * option3 // Will be passed as fourth argument to `customMemoize`\r\n * )\r\n *\r\n * const customSelector = customCreateSelector(\r\n * [inputSelector1, inputSelector2],\r\n * resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-memoize-and-memoizeoptions `createSelectorCreator`}\r\n *\r\n * @public\r\n */\r\nexport function createSelectorCreator(\r\n memoize: MemoizeFunction,\r\n ...memoizeOptionsFromArgs: DropFirstParameter\r\n): CreateSelectorFunction\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function and options for customizing memoization behavior.\r\n *\r\n * @param memoizeOrOptions - Either A `memoize` function or an `options` object containing the `memoize` function.\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template MemoizeOrOptions - The type of the first argument. It can either be a `memoize` function or an `options` object containing the `memoize` function.\r\n */\r\nexport function createSelectorCreator<\r\n MemoizeFunction extends UnknownMemoizer,\r\n ArgsMemoizeFunction extends UnknownMemoizer,\r\n MemoizeOrOptions extends\r\n | MemoizeFunction\r\n | SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n >\r\n>(\r\n memoizeOrOptions: MemoizeOrOptions,\r\n ...memoizeOptionsFromArgs: MemoizeOrOptions extends SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n >\r\n ? never\r\n : DropFirstParameter\r\n) {\r\n /** options initially passed into `createSelectorCreator`. */\r\n const createSelectorCreatorOptions: SetRequired<\r\n CreateSelectorOptions,\r\n 'memoize'\r\n > = typeof memoizeOrOptions === 'function'\r\n ? {\r\n memoize: memoizeOrOptions as MemoizeFunction,\r\n memoizeOptions: memoizeOptionsFromArgs\r\n }\r\n : memoizeOrOptions\r\n\r\n const createSelector = <\r\n InputSelectors extends SelectorArray,\r\n Result,\r\n OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n >(\r\n ...createSelectorArgs: [\r\n ...inputSelectors: [...InputSelectors],\r\n combiner: Combiner,\r\n createSelectorOptions?: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n ]\r\n ) => {\r\n let recomputations = 0\r\n let dependencyRecomputations = 0\r\n let lastResult: Result\r\n\r\n // Due to the intricacies of rest params, we can't do an optional arg after `...createSelectorArgs`.\r\n // So, start by declaring the default value here.\r\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\r\n let directlyPassedOptions: CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n > = {}\r\n\r\n // Normally, the result func or \"combiner\" is the last arg\r\n let resultFunc = createSelectorArgs.pop() as\r\n | Combiner\r\n | CreateSelectorOptions<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n\r\n // If the result func is actually an _object_, assume it's our options object\r\n if (typeof resultFunc === 'object') {\r\n directlyPassedOptions = resultFunc\r\n // and pop the real result func off\r\n resultFunc = createSelectorArgs.pop() as Combiner\r\n }\r\n\r\n assertIsFunction(\r\n resultFunc,\r\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\r\n )\r\n\r\n // Determine which set of options we're using. Prefer options passed directly,\r\n // but fall back to options given to `createSelectorCreator`.\r\n const combinedOptions = {\r\n ...createSelectorCreatorOptions,\r\n ...directlyPassedOptions\r\n }\r\n\r\n const {\r\n memoize,\r\n memoizeOptions = [],\r\n argsMemoize = weakMapMemoize,\r\n argsMemoizeOptions = [],\r\n devModeChecks = {}\r\n } = combinedOptions\r\n\r\n // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\r\n // is an array. In most libs I've looked at, it's an equality function or options object.\r\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\r\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\r\n // we wrap it in an array so we can apply it.\r\n const finalMemoizeOptions = ensureIsArray(memoizeOptions)\r\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions)\r\n const dependencies = getDependencies(createSelectorArgs) as InputSelectors\r\n\r\n const memoizedResultFunc = memoize(function recomputationWrapper() {\r\n recomputations++\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n return (resultFunc as Combiner).apply(\r\n null,\r\n arguments\r\n )\r\n }, ...finalMemoizeOptions) as Combiner &\r\n ExtractMemoizerFields\r\n\r\n let firstRun = true\r\n\r\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\r\n const selector = argsMemoize(function dependenciesChecker() {\r\n dependencyRecomputations++\r\n /** Return values of input selectors which the `resultFunc` takes as arguments. */\r\n const inputSelectorResults = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n const { identityFunctionCheck, inputStabilityCheck } =\r\n getDevModeChecksExecutionInfo(firstRun, devModeChecks)\r\n if (identityFunctionCheck.shouldRun) {\r\n identityFunctionCheck.run(\r\n resultFunc as Combiner\r\n )\r\n }\r\n\r\n if (inputStabilityCheck.shouldRun) {\r\n // make a second copy of the params, to check if we got the same results\r\n const inputSelectorResultsCopy = collectInputSelectorResults(\r\n dependencies,\r\n arguments\r\n )\r\n\r\n inputStabilityCheck.run(\r\n { inputSelectorResults, inputSelectorResultsCopy },\r\n { memoize, memoizeOptions: finalMemoizeOptions },\r\n arguments\r\n )\r\n }\r\n\r\n if (firstRun) firstRun = false\r\n }\r\n\r\n // apply arguments instead of spreading for performance.\r\n // @ts-ignore\r\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults)\r\n\r\n return lastResult\r\n }, ...finalArgsMemoizeOptions) as unknown as Selector<\r\n GetStateFromSelectors,\r\n Result,\r\n GetParamsFromSelectors\r\n > &\r\n ExtractMemoizerFields\r\n\r\n return Object.assign(selector, {\r\n resultFunc,\r\n memoizedResultFunc,\r\n dependencies,\r\n dependencyRecomputations: () => dependencyRecomputations,\r\n resetDependencyRecomputations: () => {\r\n dependencyRecomputations = 0\r\n },\r\n lastResult: () => lastResult,\r\n recomputations: () => recomputations,\r\n resetRecomputations: () => {\r\n recomputations = 0\r\n },\r\n memoize,\r\n argsMemoize\r\n }) as OutputSelector<\r\n InputSelectors,\r\n Result,\r\n OverrideMemoizeFunction,\r\n OverrideArgsMemoizeFunction\r\n >\r\n }\r\n return createSelector as CreateSelectorFunction<\r\n MemoizeFunction,\r\n ArgsMemoizeFunction\r\n >\r\n}\r\n\r\n/**\r\n * Accepts one or more \"input selectors\" (either as separate arguments or a single array),\r\n * a single \"result function\" / \"combiner\", and an optional options object, and\r\n * generates a memoized selector function.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelector `createSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createSelector =\r\n /* #__PURE__ */ createSelectorCreator(weakMapMemoize)\r\n","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","declare global {\n interface SymbolConstructor {\n readonly observable: symbol;\n }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;","/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;","/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n if (typeof obj !== 'object' || obj === null) return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}","import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore(reducer: Reducer, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer): Store> & Ext;\nexport function createStore(reducer: Reducer, preloadedState?: PreloadedState | StoreEnhancer | undefined, enhancer?: StoreEnhancer): Store> & Ext {\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = (preloadedState as StoreEnhancer);\n preloadedState = undefined;\n }\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n }\n let currentReducer = reducer;\n let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n let currentListeners: Map | null = new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns The current state tree of your application.\n */\n function getState(): S {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n return (currentState as S);\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param listener A callback to be invoked on every dispatch.\n * @returns A function to remove this change listener.\n */\n function subscribe(listener: () => void) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action: A) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== 'string') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach(listener => {\n listener();\n });\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param nextReducer The reducer for the store to use instead.\n */\n function replaceReducer(nextReducer: Reducer): void {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = ((nextReducer as unknown) as Reducer);\n\n // This action has a similar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n dispatch(({\n type: ActionTypes.REPLACE\n } as A));\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer: unknown) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = (observer as Observer);\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [$$observable]() {\n return this;\n }\n };\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch(({\n type: ActionTypes.INIT\n } as A));\n const store = (({\n dispatch: (dispatch as Dispatch),\n subscribe,\n getState,\n replaceReducer,\n [$$observable]: observable\n } as unknown) as Store & Ext);\n return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore(reducer: Reducer, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer): Store> & Ext;\nexport function legacy_createStore(reducer: Reducer, preloadedState?: PreloadedState | StoreEnhancer | undefined, enhancer?: StoreEnhancer): Store> & Ext {\n return createStore(reducer, (preloadedState as any), enhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n [key: string]: Reducer;\n}, action: Action, unexpectedKeyCache: {\n [key: string]: true;\n}) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach(key => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? 'keys' : 'key'} ` + `\"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. ` + `Expected to find one of the known reducer keys instead: ` + `\"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers: {\n [key: string]: Reducer;\n}) {\n Object.keys(reducers).forEach(key => {\n const reducer = reducers[key];\n const initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n }\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. ` + `Don't try to handle '${ActionTypes.INIT}' or other actions in \"redux/*\" ` + `namespace. They are considered private. Instead, you must return the ` + `current state for any unknown actions, unless it is undefined, ` + `in which case you must return the initial state, regardless of the ` + `action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n * functions that need to be combined into one. One handy way to obtain it\n * is to use `import * as reducers` syntax. The reducers may never\n * return undefined for any action. Instead, they should return their\n * initial state if the state passed to them was undefined, and the current\n * state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n * object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers: M): M[keyof M] extends Reducer | undefined ? Reducer, ActionFromReducersMapObject, Partial>> : never;\nexport default function combineReducers(reducers: {\n [key: string]: Reducer;\n}) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers: {\n [key: string]: Reducer;\n } = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n\n // This is used to make sure we don't warn about the same\n // keys multiple times.\n let unexpectedKeyCache: {\n [key: string]: true;\n };\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError: unknown;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state: StateFromReducersMapObject = {}, action: Action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== 'production') {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState: StateFromReducersMapObject = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${key}\" returned undefined. ` + `To ignore an action, you must explicitly return the previous state. ` + `If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}","type Func = (...a: T) => R;\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n * to left. For example, `compose(f, g, h)` is identical to doing\n * `(...args) => f(g(h(...args)))`.\n */\nexport default function compose(): (a: R) => R;\nexport default function compose(f: F): F;\n\n/* two functions */\nexport default function compose(f1: (a: A) => R, f2: Func): Func;\n\n/* three functions */\nexport default function compose(f1: (b: B) => R, f2: (a: A) => B, f3: Func): Func;\n\n/* four functions */\nexport default function compose(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func): Func;\n\n/* rest */\nexport default function compose(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]) {\n if (funcs.length === 0) {\n // infer the argument type so it is usable in inference down the line\n return (arg: T) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args: any) => a(b(...args)));\n}","// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n const middleware = ({ dispatch, getState }) => (next) => (action) => {\n if (typeof action === \"function\") {\n return action(dispatch, getState, extraArgument);\n }\n return next(action);\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n thunk,\n withExtraArgument\n};\n","import type { Action, ActionCreator, StoreEnhancer } from 'redux';\nimport { compose } from 'redux';\n/**\r\n * @public\r\n */\n\nexport interface DevToolsEnhancerOptions {\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\n name?: string;\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\n\n actionCreators?: ActionCreator[] | {\n [key: string]: ActionCreator;\n };\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\n\n latency?: number;\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\n\n maxAge?: number;\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\n\n serialize?: boolean | {\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\n options?: undefined | boolean | {\n date?: true;\n regex?: true;\n undefined?: true;\n error?: true;\n symbol?: true;\n map?: true;\n set?: true;\n function?: true | ((fn: (...args: any[]) => any) => string);\n };\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\n\n replacer?: (key: string, value: unknown) => any;\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\n\n reviver?: (key: string, value: unknown) => any;\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\n\n immutable?: any;\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\n\n refs?: any;\n };\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\n\n actionSanitizer?: (action: A, id: number) => A;\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\n\n stateSanitizer?: (state: S, index: number) => S;\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\n\n actionsDenylist?: string | string[];\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\n\n actionsAllowlist?: string | string[];\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\n\n predicate?: (state: S, action: A) => boolean;\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\n\n shouldRecordChanges?: boolean;\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\n\n pauseActionType?: string;\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\n\n autoPause?: boolean;\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\n\n shouldStartLocked?: boolean;\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\n\n shouldHotReload?: boolean;\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\n\n shouldCatchErrors?: boolean;\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\n\n features?: {\n /**\r\n * start/pause recording of dispatched actions\r\n */\n pause?: boolean;\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\n\n lock?: boolean;\n /**\r\n * persist states on page reloading\r\n */\n\n persist?: boolean;\n /**\r\n * export history of actions in a file\r\n */\n\n export?: boolean | 'custom';\n /**\r\n * import history of actions from a file\r\n */\n\n import?: boolean | 'custom';\n /**\r\n * jump back and forth (time travelling)\r\n */\n\n jump?: boolean;\n /**\r\n * skip (cancel) actions\r\n */\n\n skip?: boolean;\n /**\r\n * drag and drop actions in the history list\r\n */\n\n reorder?: boolean;\n /**\r\n * dispatch custom actions or action creators\r\n */\n\n dispatch?: boolean;\n /**\r\n * generate tests for the selected actions\r\n */\n\n test?: boolean;\n };\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\n\n trace?: boolean | ((action: A) => string);\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\n\n traceLimit?: number;\n}\ntype Compose = typeof compose;\ninterface ComposeWithDevTools {\n (options: DevToolsEnhancerOptions): Compose;\n (...funcs: StoreEnhancer[]): StoreEnhancer;\n}\n/**\r\n * @public\r\n */\n\nexport const composeWithDevTools: ComposeWithDevTools = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, ((arguments as any) as Function[]));\n};\n/**\r\n * @public\r\n */\n\nexport const devToolsEnhancer: {\n (options: DevToolsEnhancerOptions): StoreEnhancer;\n} = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","import { current, isDraft } from 'immer';\nimport { createSelectorCreator, weakMapMemoize } from 'reselect';\nexport const createDraftSafeSelectorCreator: typeof createSelectorCreator = (...args: unknown[]) => {\n const createSelector = (createSelectorCreator as any)(...args);\n return (...args: unknown[]) => {\n const selector = createSelector(...args);\n\n const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest);\n\n Object.assign(wrappedSelector, selector);\n return (wrappedSelector as any);\n };\n};\n/**\r\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\r\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\r\n * the selector will act on the current draft value, instead of returning a cached value\r\n * that might be possibly outdated if the draft has been modified since.\r\n * @public\r\n */\n\nexport const createDraftSafeSelector = createDraftSafeSelectorCreator(weakMapMemoize);","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { isAction } from 'redux';\nimport type { IsUnknownOrNonInferrable, IfMaybeUndefined, IfVoid, IsAny } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\n\nexport type PayloadAction

= {\n payload: P;\n type: T;\n} & ([M] extends [never] ? {} : {\n meta: M;\n}) & ([E] extends [never] ? {} : {\n error: E;\n});\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\n\nexport type PrepareAction

= ((...args: any[]) => {\n payload: P;\n}) | ((...args: any[]) => {\n payload: P;\n meta: any;\n}) | ((...args: any[]) => {\n payload: P;\n error: any;\n}) | ((...args: any[]) => {\n payload: P;\n meta: any;\n error: any;\n});\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\n\nexport type _ActionCreatorWithPreparedPayload | void, T extends string = string> = PA extends PrepareAction ? ActionCreatorWithPreparedPayload, P, T, ReturnType extends {\n error: infer E;\n} ? E : never, ReturnType extends {\n meta: infer M;\n} ? M : never> : void;\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\n\nexport interface BaseActionCreator {\n type: T;\n match: (action: unknown) => action is PayloadAction;\n}\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\n\nexport interface ActionCreatorWithPreparedPayload extends BaseActionCreator {\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\n (...args: Args): PayloadAction;\n}\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\n\nexport interface ActionCreatorWithOptionalPayload extends BaseActionCreator {\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\n (payload?: P): PayloadAction;\n}\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\n\nexport interface ActionCreatorWithoutPayload extends BaseActionCreator {\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\n (noArgument: void): PayloadAction;\n}\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\n\nexport interface ActionCreatorWithPayload extends BaseActionCreator {\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\n (payload: P): PayloadAction;\n}\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\n\nexport interface ActionCreatorWithNonInferrablePayload extends BaseActionCreator {\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\n (payload: PT): PayloadAction;\n}\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\n\nexport type PayloadActionCreator

| void = void> = IfPrepareActionMethodProvided, // else\nIsAny, IsUnknownOrNonInferrable, // else\nIfVoid, // else\nIfMaybeUndefined, // else\nActionCreatorWithPayload>>>>>;\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\n\nexport function createAction

(type: T): PayloadActionCreator;\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\n\nexport function createAction, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator['payload'], T, PA>;\nexport function createAction(type: string, prepareAction?: Function): any {\n function actionCreator(...args: any[]) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n\n if (!prepared) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(0) : 'prepareAction did not return an object');\n }\n\n return {\n type,\n payload: prepared.payload,\n ...('meta' in prepared && {\n meta: prepared.meta\n }),\n ...('error' in prepared && {\n error: prepared.error\n })\n };\n }\n\n return {\n type,\n payload: args[0]\n };\n }\n\n actionCreator.toString = () => `${type}`;\n\n actionCreator.type = type;\n\n actionCreator.match = (action: unknown): action is PayloadAction => isAction(action) && action.type === type;\n\n return actionCreator;\n}\n/**\r\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\r\n */\n\nexport function isActionCreator(action: unknown): action is BaseActionCreator & Function {\n return typeof action === 'function' && 'type' in action && // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction((action as any));\n}\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\n\nexport function isFSA(action: unknown): action is {\n type: string;\n payload?: unknown;\n error?: unknown;\n meta?: unknown;\n} {\n return isAction(action) && Object.keys(action).every(isValidKey);\n}\n\nfunction isValidKey(key: string) {\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1;\n} // helper types for more readable typings\n\n\ntype IfPrepareActionMethodProvided | void, True, False> = PA extends (...args: any[]) => any ? True : False;","import { Action } from '../types/actions';\nimport isPlainObject from './isPlainObject';\nexport default function isAction(action: unknown): action is Action {\n return isPlainObject(action) && 'type' in action && typeof (action as Record<'type', unknown>).type === 'string';\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { produce as createNextState, isDraftable } from 'immer';\nimport type { Middleware, StoreEnhancer } from 'redux';\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\n let elapsed = 0;\n return {\n measureTime(fn: () => T): T {\n const started = Date.now();\n\n try {\n return fn();\n } finally {\n const finished = Date.now();\n elapsed += finished - started;\n }\n },\n\n warnIfExceeded() {\n if (elapsed > maxDelay) {\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n }\n }\n\n };\n}\nexport function delay(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\nexport function find(iterable: Iterable, comparator: (item: T) => boolean): T | undefined {\n for (const entry of iterable) {\n if (comparator(entry)) {\n return entry;\n }\n }\n\n return undefined;\n}\nexport class Tuple = []> extends Array {\n constructor(length: number);\n constructor(...items: Items);\n\n constructor(...items: any[]) {\n super(...items);\n Object.setPrototypeOf(this, Tuple.prototype);\n }\n\n static get [Symbol.species]() {\n return (Tuple as any);\n }\n\n concat>(items: Tuple): Tuple<[...Items, ...AdditionalItems]>;\n concat>(items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n concat>(...items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n\n concat(...arr: any[]) {\n return super.concat.apply(this, arr);\n }\n\n prepend>(items: Tuple): Tuple<[...AdditionalItems, ...Items]>;\n prepend>(items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n prepend>(...items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n\n prepend(...arr: any[]) {\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new Tuple(...arr[0].concat(this));\n }\n\n return new Tuple(...arr.concat(this));\n }\n\n}\nexport function freezeDraftable(val: T) {\n return isDraftable(val) ? createNextState(val, () => {}) : val;\n}\ninterface WeakMapEmplaceHandler {\n /**\r\n * Will be called to get value, if no value is currently in map.\r\n */\n insert?(key: K, map: WeakMap): V;\n /**\r\n * Will be called to update a value, if one exists already.\r\n */\n\n update?(previous: V, key: K, map: WeakMap): V;\n}\ninterface MapEmplaceHandler {\n /**\r\n * Will be called to get value, if no value is currently in map.\r\n */\n insert?(key: K, map: Map): V;\n /**\r\n * Will be called to update a value, if one exists already.\r\n */\n\n update?(previous: V, key: K, map: Map): V;\n}\nexport function emplace(map: Map, key: K, handler: MapEmplaceHandler): V;\nexport function emplace(map: WeakMap, key: K, handler: WeakMapEmplaceHandler): V;\n/**\r\n * Allow inserting a new value, or updating an existing one\r\n * @throws if called for a key with no current value and no `insert` handler is provided\r\n * @returns current value in map (after insertion/updating)\r\n * ```ts\r\n * // return current value if already in map, otherwise initialise to 0 and return that\r\n * const num = emplace(map, key, {\r\n * insert: () => 0\r\n * })\r\n *\r\n * // increase current value by one if already in map, otherwise initialise to 0\r\n * const num = emplace(map, key, {\r\n * update: (n) => n + 1,\r\n * insert: () => 0,\r\n * })\r\n *\r\n * // only update if value's already in the map - and increase it by one\r\n * if (map.has(key)) {\r\n * const num = emplace(map, key, {\r\n * update: (n) => n + 1,\r\n * })\r\n * }\r\n * ```\r\n *\r\n * @remarks\r\n * Based on https://github.com/tc39/proposal-upsert currently in Stage 2 - maybe in a few years we'll be able to replace this with direct method calls\r\n */\n\nexport function emplace(map: WeakMap, key: K, handler: WeakMapEmplaceHandler): V {\n if (map.has(key)) {\n let value = (map.get(key) as V);\n\n if (handler.update) {\n value = handler.update(value, key, map);\n map.set(key, value);\n }\n\n return value;\n }\n\n if (!handler.insert) throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(10) : 'No insert provided for key not already in map');\n const inserted = handler.insert(key, map);\n map.set(key, inserted);\n return inserted;\n}","import type { Middleware, UnknownAction } from 'redux';\nimport type { ThunkMiddleware } from 'redux-thunk';\nimport { thunk as thunkMiddleware, withExtraArgument } from 'redux-thunk';\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\n/* PROD_START_REMOVE_UMD */\n\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware';\n/* PROD_STOP_REMOVE_UMD */\n\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware';\nimport type { ExcludeFromTuple } from './tsHelpers';\nimport { Tuple } from './utils';\n\nfunction isBoolean(x: any): x is boolean {\n return typeof x === 'boolean';\n}\n\ninterface ThunkOptions {\n extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n thunk?: boolean | ThunkOptions;\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;\n}\nexport type ThunkMiddlewareFor = O extends {\n thunk: false;\n} ? never : O extends {\n thunk: {\n extraArgument: infer E;\n };\n} ? ThunkMiddleware : ThunkMiddleware;\nexport type GetDefaultMiddleware = (options?: O) => Tuple], never>>;\nexport const buildGetDefaultMiddleware = (): GetDefaultMiddleware => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple();\n\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(withExtraArgument(thunk.extraArgument));\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (immutableCheck) {\n /* PROD_START_REMOVE_UMD */\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {};\n\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n /* PROD_STOP_REMOVE_UMD */\n }\n\n if (serializableCheck) {\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {};\n\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n\n if (actionCreatorCheck) {\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {};\n\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n\n return (middlewareArray as any);\n};","import type { StoreEnhancer } from 'redux';\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch';\nexport const prepareAutoBatched = () => (payload: T): {\n payload: T;\n meta: unknown;\n} => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\n\nconst createQueueWithTimer = (timeout: number) => {\n return (notify: () => void) => {\n setTimeout(notify, timeout);\n };\n}; // requestAnimationFrame won't exist in SSR environments.\n// Fall back to a vague approximation just to keep from erroring.\n\n\nconst rAF = typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nexport type AutoBatchOptions = {\n type: 'tick';\n} | {\n type: 'timer';\n timeout: number;\n} | {\n type: 'raf';\n} | {\n type: 'callback';\n queueNotification: (notify: () => void) => void;\n};\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}`: queues using `queueMicrotask`\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame` (default)\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}`: lets you provide your own callback\r\n *\r\n *\r\n */\n\nexport const autoBatchEnhancer = (options: AutoBatchOptions = {\n type: 'raf'\n}): StoreEnhancer => next => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = new Set<() => void>();\n const queueCallback = options.type === 'tick' ? queueMicrotask : options.type === 'raf' ? rAF : options.type === 'callback' ? options.queueNotification : createQueueWithTimer(options.timeout);\n\n const notifyListeners = () => {\n // We're running at the end of the event loop tick.\n // Run the real listener callbacks to actually update the UI.\n notificationQueued = false;\n\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach(l => l());\n }\n };\n\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener: () => void) {\n // Each wrapped listener will only call the real listener if\n // the `notifying` flag is currently active when it's called.\n // This lets the base store work as normal, while the actual UI\n // update becomes controlled by this enhancer.\n const wrappedListener: typeof listener = () => notifying && listener();\n\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener);\n return () => {\n unsubscribe();\n listeners.delete(listener);\n };\n },\n\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action: any) {\n try {\n // If the action does _not_ have the `shouldAutoBatch` flag,\n // we resume/continue normal notify-after-each-dispatch behavior\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]; // If a `notifyListeners` microtask was queued, you can't cancel it.\n // Instead, we set a flag so that it's a no-op when it does run\n\n shouldNotifyAtEndOfTick = !notifying;\n\n if (shouldNotifyAtEndOfTick) {\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\n // a microtask to notify listeners at the end of the event loop tick.\n // Make sure we only enqueue this _once_ per tick.\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n } // Go ahead and process the action as usual, including reducers.\n // If normal notification behavior is enabled, the store will notify\n // all of its own listeners, and the wrapper callbacks above will\n // see `notifying` is true and pass on to the real listener callbacks.\n // If we're \"batching\" behavior, then the wrapped callbacks will\n // bail out, causing the base store notification behavior to be no-ops.\n\n\n return store.dispatch(action);\n } finally {\n // Assume we're back to normal behavior after each action\n notifying = true;\n }\n }\n\n });\n};","import type { StoreEnhancer } from 'redux';\nimport type { AutoBatchOptions } from './autoBatchEnhancer';\nimport { autoBatchEnhancer } from './autoBatchEnhancer';\nimport { Tuple } from './utils';\nimport type { Middlewares } from './configureStore';\nimport type { ExtractDispatchExtensions } from './tsHelpers';\ntype GetDefaultEnhancersOptions = {\n autoBatch?: boolean | AutoBatchOptions;\n};\nexport type GetDefaultEnhancers> = (options?: GetDefaultEnhancersOptions) => Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>]>;\nexport const buildGetDefaultEnhancers = ,>(middlewareEnhancer: StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>): GetDefaultEnhancers => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple(middlewareEnhancer);\n\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === 'object' ? autoBatch : undefined));\n }\n\n return (enhancerArray as any);\n};","import { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action } from 'redux';\nimport type { CaseReducer, CaseReducers, ActionMatcherDescriptionCollection } from './createReducer';\nimport type { TypeGuard } from './tsHelpers';\nexport interface TypedActionCreator {\n (...args: any[]): Action;\n type: Type;\n}\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\n\nexport interface ActionReducerMapBuilder {\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\n addCase>(actionCreator: ActionCreator, reducer: CaseReducer>): ActionReducerMapBuilder;\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\n\n addCase>(type: Type, reducer: CaseReducer): ActionReducerMapBuilder;\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n ```ts\r\n import {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n UnknownAction,\r\n } from \"@reduxjs/toolkit\";\r\n type GenericAsyncThunk = AsyncThunk;\r\n type PendingAction = ReturnType;\r\n type RejectedAction = ReturnType;\r\n type FulfilledAction = ReturnType;\r\n const initialState: Record = {};\r\n const resetAction = createAction(\"reset-tracked-loading-state\");\r\n function isPendingAction(action: UnknownAction): action is PendingAction {\r\n return typeof action.type === \"string\" && action.type.endsWith(\"/pending\");\r\n }\r\n const reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n });\r\n ```\r\n */\n\n addMatcher(matcher: TypeGuard | ((action: any) => boolean), reducer: CaseReducer): Omit, 'addCase'>;\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n ```ts\r\n import { createReducer } from '@reduxjs/toolkit'\r\n const initialState = { otherActions: 0 }\r\n const reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n })\r\n ```\r\n */\n\n addDefaultCase(reducer: CaseReducer): {};\n}\nexport function executeReducerBuilderCallback(builderCallback: (builder: ActionReducerMapBuilder) => void): [CaseReducers, ActionMatcherDescriptionCollection, CaseReducer | undefined] {\n const actionsMap: CaseReducers = {};\n const actionMatchers: ActionMatcherDescriptionCollection = [];\n let defaultCaseReducer: CaseReducer | undefined;\n const builder = {\n addCase(typeOrActionCreator: string | TypedActionCreator, reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n /*\r\n to keep the definition by the user in line with actual behavior,\r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\n if (actionMatchers.length > 0) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(26) : '`builder.addCase` should only be called before calling `builder.addMatcher`');\n }\n\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(27) : '`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n }\n }\n\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(28) : '`builder.addCase` cannot be called with an empty action type');\n }\n\n if (type in actionsMap) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(29) : '`builder.addCase` cannot be called with two reducers for the same action type ' + `'${type}'`);\n }\n\n actionsMap[type] = reducer;\n return builder;\n },\n\n addMatcher(matcher: TypeGuard, reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(30) : '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n }\n }\n\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n\n addDefaultCase(reducer: CaseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(31) : '`builder.addDefaultCase` can only be called once');\n }\n }\n\n defaultCaseReducer = reducer;\n return builder;\n }\n\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}","import { formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action, UnknownAction, Reducer } from 'redux';\nimport type { Selector } from 'reselect';\nimport type { ActionCreatorWithoutPayload, PayloadAction, PayloadActionCreator, PrepareAction, _ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport type { ActionMatcherDescriptionCollection, CaseReducer, ReducerWithInitialState } from './createReducer';\nimport { createReducer } from './createReducer';\nimport type { ActionReducerMapBuilder, TypedActionCreator } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { Id, Tail, TypeGuard } from './tsHelpers';\nimport type { InjectConfig } from './combineSlices';\nimport type { AsyncThunk, AsyncThunkConfig, AsyncThunkOptions, AsyncThunkPayloadCreator, OverrideThunkApiConfigs } from './createAsyncThunk';\nimport { createAsyncThunk as _createAsyncThunk } from './createAsyncThunk';\nimport { emplace } from './utils';\nconst asyncThunkSymbol = Symbol.for('rtk-slice-createasyncthunk'); // type is annotated because it's too long to infer\n\nexport const asyncThunkCreator: {\n [asyncThunkSymbol]: typeof _createAsyncThunk;\n} = {\n [asyncThunkSymbol]: _createAsyncThunk\n};\ninterface InjectIntoConfig extends InjectConfig {\n reducerPath?: NewReducerPath;\n}\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\n\nexport interface Slice = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> {\n /**\r\n * The slice name.\r\n */\n name: Name;\n /**\r\n * The slice reducer path.\r\n */\n\n reducerPath: ReducerPath;\n /**\r\n * The slice's reducer.\r\n */\n\n reducer: Reducer;\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\n\n actions: CaseReducerActions;\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\n\n caseReducers: SliceDefinedCaseReducers;\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\n\n getInitialState: () => State;\n /**\r\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\r\n */\n\n getSelectors(this: this): Id>;\n /**\r\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\r\n */\n\n getSelectors(this: this, selectState: (this: this, rootState: RootState) => State): Id>;\n /**\r\n * Selectors that assume the slice's state is `rootState[slice.reducerPath]` (which is usually the case)\r\n *\r\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.reducerPath])`.\r\n */\n\n selectors: Id>;\n /**\r\n * Inject slice into provided reducer (return value from `combineSlices`), and return injected slice.\r\n */\n\n injectInto(this: this, injectable: {\n inject: (slice: {\n reducerPath: string;\n reducer: Reducer;\n }, config?: InjectConfig) => void;\n }, config?: InjectIntoConfig): InjectedSlice;\n /**\r\n * Select the slice state, using the slice's current reducerPath.\r\n *\r\n * Will throw an error if slice is not found.\r\n */\n\n selectSlice(this: this, state: { [K in ReducerPath]: State }): State;\n}\n/**\r\n * A slice after being called with `injectInto(reducer)`.\r\n *\r\n * Selectors can now be called with an `undefined` value, in which case they use the slice's initial state.\r\n */\n\ninterface InjectedSlice = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> extends Omit, 'getSelectors' | 'selectors'> {\n /**\r\n * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\r\n */\n getSelectors(): Id>;\n /**\r\n * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\r\n */\n\n getSelectors(selectState: (this: this, rootState: RootState) => State | undefined): Id>;\n /**\r\n * Selectors that assume the slice's state is `rootState[slice.name]` (which is usually the case)\r\n *\r\n * Equivalent to `slice.getSelectors((state: RootState) => state[slice.name])`.\r\n */\n\n selectors: Id>;\n /**\r\n * Select the slice state, using the slice's current reducerPath.\r\n *\r\n * Returns initial state if slice is not found.\r\n */\n\n selectSlice(state: { [K in ReducerPath]?: State | undefined }): State;\n}\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\n\nexport interface CreateSliceOptions = SliceCaseReducers, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors = SliceSelectors> {\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\n name: Name;\n /**\r\n * The slice's reducer path. Used when injecting into a combined slice reducer.\r\n */\n\n reducerPath?: ReducerPath;\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\n\n initialState: State | (() => State);\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\n\n reducers: ValidateSliceCaseReducers | ((creators: ReducerCreators) => CR);\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * \r\n * @example\r\n ```ts\r\n import { createAction, createSlice, Action } from '@reduxjs/toolkit'\r\n const incrementBy = createAction('incrementBy')\r\n const decrement = createAction('decrement')\r\n interface RejectedAction extends Action {\r\n error: Error\r\n }\r\n function isRejectedAction(action: Action): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n }\r\n createSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n })\r\n ```\r\n */\n\n extraReducers?: (builder: ActionReducerMapBuilder) => void;\n /**\r\n * A map of selectors that receive the slice's state and any additional arguments, and return a result.\r\n */\n\n selectors?: Selectors;\n}\nexport enum ReducerType {\n reducer = 'reducer',\n reducerWithPrepare = 'reducerWithPrepare',\n asyncThunk = 'asyncThunk',\n}\ninterface ReducerDefinition {\n _reducerDefinitionType: T;\n}\nexport interface CaseReducerDefinition extends CaseReducer, ReducerDefinition {}\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\n\nexport type CaseReducerWithPrepare = {\n reducer: CaseReducer;\n prepare: PrepareAction;\n};\nexport interface CaseReducerWithPrepareDefinition extends CaseReducerWithPrepare, ReducerDefinition {}\nexport interface AsyncThunkSliceReducerConfig {\n pending?: CaseReducer['pending']>>;\n rejected?: CaseReducer['rejected']>>;\n fulfilled?: CaseReducer['fulfilled']>>;\n settled?: CaseReducer['rejected' | 'fulfilled']>>;\n options?: AsyncThunkOptions;\n}\nexport interface AsyncThunkSliceReducerDefinition extends AsyncThunkSliceReducerConfig, ReducerDefinition {\n payloadCreator: AsyncThunkPayloadCreator;\n}\n/**\r\n * Providing these as part of the config would cause circular types, so we disallow passing them\r\n */\n\ntype PreventCircular = { [K in keyof ThunkApiConfig]: K extends 'state' | 'dispatch' ? never : ThunkApiConfig[K] };\ninterface AsyncThunkCreator = PreventCircular> {\n (payloadCreator: AsyncThunkPayloadCreator, config?: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition;\n = {}>(payloadCreator: AsyncThunkPayloadCreator, config?: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition;\n withTypes>(): AsyncThunkCreator>;\n}\nexport interface ReducerCreators {\n reducer(caseReducer: CaseReducer): CaseReducerDefinition;\n reducer(caseReducer: CaseReducer>): CaseReducerDefinition>;\n asyncThunk: AsyncThunkCreator;\n preparedReducer>(prepare: Prepare, reducer: CaseReducer>>): {\n _reducerDefinitionType: ReducerType.reducerWithPrepare;\n prepare: Prepare;\n reducer: CaseReducer>>;\n };\n}\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\n\nexport type SliceCaseReducers = Record> | CaseReducerWithPrepareDefinition> | AsyncThunkSliceReducerDefinition> | Record> | CaseReducerWithPrepare>>;\n/**\r\n * The type describing a slice's `selectors` option.\r\n */\n\nexport type SliceSelectors = {\n [K: string]: (sliceState: State, ...args: any[]) => any;\n};\ntype SliceActionType = ActionName extends string | number ? `${SliceName}/${ActionName}` : string;\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\n\nexport type CaseReducerActions, SliceName extends string> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends {\n prepare: any;\n} ? ActionCreatorForCaseReducerWithPrepare> : Definition extends AsyncThunkSliceReducerDefinition ? AsyncThunk : Definition extends {\n reducer: any;\n} ? ActionCreatorForCaseReducer> : ActionCreatorForCaseReducer> : never };\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\n\ntype ActionCreatorForCaseReducerWithPrepare = _ActionCreatorWithPreparedPayload;\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\n\ntype ActionCreatorForCaseReducer = CR extends (state: any, action: infer Action) => any ? Action extends {\n payload: infer P;\n} ? PayloadActionCreator : ActionCreatorWithoutPayload : ActionCreatorWithoutPayload;\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\n\ntype SliceDefinedCaseReducers> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends AsyncThunkSliceReducerDefinition ? Id, 'fulfilled' | 'rejected' | 'pending' | 'settled'>> : Definition extends {\n reducer: infer Reducer;\n} ? Reducer : Definition : never };\ntype RemappedSelector = S extends Selector ? Selector & {\n unwrapped: S;\n} : never;\n/**\r\n * Extracts the final selector type from the `selectors` object.\r\n *\r\n * Removes the `string` index signature from the default value.\r\n */\n\ntype SliceDefinedSelectors, RootState> = { [K in keyof Selectors as string extends K ? never : K]: RemappedSelector };\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\n\nexport type ValidateSliceCaseReducers> = ACR & { [T in keyof ACR]: ACR[T] extends {\n reducer(s: S, action?: infer A): any;\n} ? {\n prepare(...a: never[]): Omit;\n} : {} };\n\nfunction getType(slice: string, actionKey: string): string {\n return `${slice}/${actionKey}`;\n}\n\ninterface BuildCreateSliceConfig {\n creators?: {\n asyncThunk?: typeof asyncThunkCreator;\n };\n}\nexport function buildCreateSlice({\n creators\n}: BuildCreateSliceConfig = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice, Name extends string, Selectors extends SliceSelectors, ReducerPath extends string = Name>(options: CreateSliceOptions): Slice {\n const {\n name,\n reducerPath = ((name as unknown) as ReducerPath)\n } = options;\n\n if (!name) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(11) : '`name` is a required option for createSlice');\n }\n\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n if (options.initialState === undefined) {\n console.error('You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`');\n }\n }\n\n const reducers = (typeof options.reducers === 'function' ? options.reducers(buildReducerCreators()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context: ReducerHandlingContext = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods: ReducerHandlingContextMethods = {\n addCase(typeOrActionCreator: string | TypedActionCreator, reducer: CaseReducer) {\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(12) : '`context.addCase` cannot be called with an empty action type');\n }\n\n if (type in context.sliceCaseReducersByType) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(13) : '`context.addCase` cannot be called with two reducers for the same action type: ' + type);\n }\n\n context.sliceCaseReducersByType[type] = reducer;\n return contextMethods;\n },\n\n addMatcher(matcher, reducer) {\n context.sliceMatchers.push({\n matcher,\n reducer\n });\n return contextMethods;\n },\n\n exposeAction(name, actionCreator) {\n context.actionCreators[name] = actionCreator;\n return contextMethods;\n },\n\n exposeCaseReducer(name, reducer) {\n context.sliceCaseReducersByName[name] = reducer;\n return contextMethods;\n }\n\n };\n reducerNames.forEach(reducerName => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails: ReducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === 'function'\n };\n\n if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);\n }\n });\n\n function buildReducer() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options.extraReducers === 'object') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = undefined] = typeof options.extraReducers === 'function' ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = { ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, builder => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, (finalCaseReducers[key] as CaseReducer));\n }\n\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n\n const selectSelf = (state: State) => state;\n\n const injectedSelectorCache = new WeakMap, WeakMap<(rootState: any) => State | undefined, Record any>>>();\n\n let _reducer: ReducerWithInitialState;\n\n const slice: Slice = {\n name,\n reducerPath,\n\n reducer(state, action) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n },\n\n actions: (context.actionCreators as any),\n caseReducers: (context.sliceCaseReducersByName as any),\n\n getInitialState() {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n },\n\n getSelectors(selectState: (rootState: any) => State = selectSelf) {\n const selectorCache = emplace(injectedSelectorCache, this, {\n insert: () => new WeakMap()\n });\n return (emplace(selectorCache, selectState, {\n insert: () => {\n const map: Record> = {};\n\n for (const [name, selector] of Object.entries(options.selectors ?? {})) {\n map[name] = wrapSelector(this, selector, selectState, this !== slice);\n }\n\n return map;\n }\n }) as any);\n },\n\n selectSlice(state) {\n let sliceState = state[this.reducerPath];\n\n if (typeof sliceState === 'undefined') {\n // check if injectInto has been called\n if (this !== slice) {\n sliceState = this.getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(15) : 'selectSlice returned undefined for an uninjected slice reducer');\n }\n }\n\n return sliceState;\n },\n\n get selectors() {\n return this.getSelectors(this.selectSlice);\n },\n\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const reducerPath = pathOpt ?? this.reducerPath;\n injectable.inject({\n reducerPath,\n reducer: this.reducer\n }, config);\n return ({ ...this,\n reducerPath\n } as any);\n }\n\n };\n return slice;\n };\n}\n\nfunction wrapSelector>(slice: Slice, selector: S, selectState: Selector, injected?: boolean) {\n function wrapper(rootState: NewState, ...args: any[]) {\n let sliceState = selectState.call(slice, rootState);\n\n if (typeof sliceState === 'undefined') {\n if (injected) {\n sliceState = slice.getInitialState();\n } else if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(16) : 'selectState returned undefined for an uninjected slice reducer');\n }\n }\n\n return selector(sliceState, ...args);\n }\n\n wrapper.unwrapped = selector;\n return (wrapper as RemappedSelector);\n}\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * @public\r\n */\n\n\nexport const createSlice = buildCreateSlice();\ninterface ReducerHandlingContext {\n sliceCaseReducersByName: Record | Pick, 'fulfilled' | 'rejected' | 'pending' | 'settled'>>;\n sliceCaseReducersByType: Record>;\n sliceMatchers: ActionMatcherDescriptionCollection;\n actionCreators: Record;\n}\ninterface ReducerHandlingContextMethods {\n /**\r\n * Adds a case reducer to handle a single action type.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\n addCase>(actionCreator: ActionCreator, reducer: CaseReducer>): ReducerHandlingContextMethods;\n /**\r\n * Adds a case reducer to handle a single action type.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\n\n addCase>(type: Type, reducer: CaseReducer): ReducerHandlingContextMethods;\n /**\r\n * Allows you to match incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n */\n\n addMatcher(matcher: TypeGuard, reducer: CaseReducer): ReducerHandlingContextMethods;\n /**\r\n * Add an action to be exposed under the final `slice.actions` key.\r\n * @param name The key to be exposed as.\r\n * @param actionCreator The action to expose.\r\n * @example\r\n * context.exposeAction(\"addPost\", createAction(\"addPost\"));\r\n *\r\n * export const { addPost } = slice.actions\r\n *\r\n * dispatch(addPost(post))\r\n */\n\n exposeAction(name: string, actionCreator: Function): ReducerHandlingContextMethods;\n /**\r\n * Add a case reducer to be exposed under the final `slice.caseReducers` key.\r\n * @param name The key to be exposed as.\r\n * @param reducer The reducer to expose.\r\n * @example\r\n * context.exposeCaseReducer(\"addPost\", (state, action: PayloadAction) => {\r\n * state.push(action.payload)\r\n * })\r\n *\r\n * slice.caseReducers.addPost([], addPost(post))\r\n */\n\n exposeCaseReducer(name: string, reducer: CaseReducer | Pick, 'fulfilled' | 'rejected' | 'pending' | 'settled'>): ReducerHandlingContextMethods;\n}\ninterface ReducerDetails {\n /** The key the reducer was defined under */\n reducerName: string;\n /** The predefined action type, i.e. `${slice.name}/${reducerName}` */\n\n type: string;\n /** Whether create. notation was used when defining reducers */\n\n createNotation: boolean;\n}\n\nfunction buildReducerCreators(): ReducerCreators {\n function asyncThunk(payloadCreator: AsyncThunkPayloadCreator, config: AsyncThunkSliceReducerConfig): AsyncThunkSliceReducerDefinition {\n return {\n _reducerDefinitionType: ReducerType.asyncThunk,\n payloadCreator,\n ...config\n };\n }\n\n asyncThunk.withTypes = () => asyncThunk;\n\n return {\n reducer(caseReducer: CaseReducer) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args: Parameters) {\n return caseReducer(...args);\n }\n\n }[caseReducer.name], ({\n _reducerDefinitionType: ReducerType.reducer\n } as const));\n },\n\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: ReducerType.reducerWithPrepare,\n prepare,\n reducer\n };\n },\n\n asyncThunk: (asyncThunk as any)\n };\n}\n\nfunction handleNormalReducerDefinition({\n type,\n reducerName,\n createNotation\n}: ReducerDetails, maybeReducerWithPrepare: CaseReducer | CaseReducerWithPrepare>, context: ReducerHandlingContextMethods) {\n let caseReducer: CaseReducer;\n let prepareCallback: PrepareAction | undefined;\n\n if ('reducer' in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(17) : 'Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.');\n }\n\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\n\nfunction isAsyncThunkSliceReducerDefinition(reducerDefinition: any): reducerDefinition is AsyncThunkSliceReducerDefinition {\n return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk;\n}\n\nfunction isCaseReducerWithPrepareDefinition(reducerDefinition: any): reducerDefinition is CaseReducerWithPrepareDefinition {\n return reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare;\n}\n\nfunction handleThunkCaseReducerDefinition({\n type,\n reducerName\n}: ReducerDetails, reducerDefinition: AsyncThunkSliceReducerDefinition, context: ReducerHandlingContextMethods, cAT: typeof _createAsyncThunk | undefined) {\n if (!cAT) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(18) : 'Cannot use `create.asyncThunk` in the built-in `createSlice`. ' + 'Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.');\n }\n\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, (options as any));\n context.exposeAction(reducerName, thunk);\n\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\n\nfunction noop() {}","import { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Draft } from 'immer';\nimport { produce as createNextState, isDraft, isDraftable } from 'immer';\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { ActionReducerMapBuilder } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { NoInfer, TypeGuard } from './tsHelpers';\nimport { freezeDraftable } from './utils';\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\n\nexport type Actions = Record;\nexport type ActionMatcherDescription = {\n matcher: TypeGuard;\n reducer: CaseReducer>;\n};\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray>;\nexport type ActionMatcherDescriptionCollection = Array>;\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\n\nexport type CaseReducer = (state: Draft, action: A) => NoInfer | void | Draft>;\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\n\nexport type CaseReducers = { [T in keyof AS]: AS[T] extends Action ? CaseReducer : void };\nexport type NotFunction = T extends Function ? never : T;\n\nfunction isStateFunction(x: unknown): x is () => S {\n return typeof x === 'function';\n}\n\nexport type ReducerWithInitialState> = Reducer & {\n getInitialState: () => S;\n};\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This function accepts a callback that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n UnknownAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: UnknownAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\n\nexport function createReducer>(initialState: S | (() => S), mapOrBuilderCallback: (builder: ActionReducerMapBuilder) => void): ReducerWithInitialState {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof mapOrBuilderCallback === 'object') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback); // Ensure the initial state gets frozen either way (if draftable)\n\n let getInitialState: () => S;\n\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n } else {\n const frozenInitialState = freezeDraftable(initialState);\n\n getInitialState = () => frozenInitialState;\n }\n\n function reducer(state = getInitialState(), action: any): S {\n let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n matcher\n }) => matcher(action)).map(({\n reducer\n }) => reducer)];\n\n if (caseReducers.filter(cr => !!cr).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n\n return caseReducers.reduce((previousState, caseReducer): S => {\n if (caseReducer) {\n if (isDraft(previousState)) {\n // If it's already a draft, we must already be inside a `createNextState` call,\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n // inside an existing draft. It's safe to just pass the draft to the mutator.\n const draft = (previousState as Draft); // We can assume this is already a draft\n\n const result = caseReducer(draft, action);\n\n if (result === undefined) {\n return previousState;\n }\n\n return (result as S);\n } else if (!isDraftable(previousState)) {\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\n // return the caseReducer func and not wrap it with produce.\n const result = caseReducer((previousState as any), action);\n\n if (result === undefined) {\n if (previousState === null) {\n return previousState;\n }\n\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(9) : 'A case reducer on a non-draftable value must not return undefined');\n }\n\n return (result as S);\n } else {\n // @ts-ignore createNextState() produces an Immutable> rather\n // than an Immutable, and TypeScript cannot find out how to reconcile\n // these two types.\n return createNextState(previousState, (draft: Draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n\n return previousState;\n }, state);\n }\n\n reducer.getInitialState = getInitialState;\n return (reducer as ReducerWithInitialState);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { AbortSignalWithReason } from './types';\nexport const assertFunction: (func: unknown, expected: string) => asserts func is (...args: unknown[]) => unknown = (func: unknown, expected: string) => {\n if (typeof func !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(32) : `${expected} is not a function`);\n }\n};\nexport const noop = () => {};\nexport const catchRejection = (promise: Promise, onError = noop): Promise => {\n promise.catch(onError);\n return promise;\n};\nexport const addAbortSignalListener = (abortSignal: AbortSignal, callback: (evt: Event) => void) => {\n abortSignal.addEventListener('abort', callback, {\n once: true\n });\n return () => abortSignal.removeEventListener('abort', callback);\n};\n/**\r\n * Calls `abortController.abort(reason)` and patches `signal.reason`.\r\n * if it is not supported.\r\n *\r\n * At the time of writing `signal.reason` is available in FF chrome, edge node 17 and deno.\r\n * @param abortController\r\n * @param reason\r\n * @returns\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason\r\n */\n\nexport const abortControllerWithReason = (abortController: AbortController, reason: T): void => {\n type Consumer = (val: T) => void;\n const signal = (abortController.signal as AbortSignalWithReason);\n\n if (signal.aborted) {\n return;\n } // Patch `reason` if necessary.\n // - We use defineProperty here because reason is a getter of `AbortSignal.__proto__`.\n // - We need to patch 'reason' before calling `.abort()` because listeners to the 'abort'\n // event are are notified immediately.\n\n\n if (!('reason' in signal)) {\n Object.defineProperty(signal, 'reason', {\n enumerable: true,\n value: reason,\n configurable: true,\n writable: true\n });\n }\n\n ;\n (abortController.abort as Consumer)(reason);\n};","import type { SerializedError } from '@reduxjs/toolkit';\nconst task = 'task';\nconst listener = 'listener';\nconst completed = 'completed';\nconst cancelled = 'cancelled';\n/* TaskAbortError error codes */\n\nexport const taskCancelled = (`task-${cancelled}` as const);\nexport const taskCompleted = (`task-${completed}` as const);\nexport const listenerCancelled = (`${listener}-${cancelled}` as const);\nexport const listenerCompleted = (`${listener}-${completed}` as const);\nexport class TaskAbortError implements SerializedError {\n name = 'TaskAbortError';\n message: string;\n\n constructor(public code: string | undefined) {\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n\n}","import { TaskAbortError } from './exceptions';\nimport type { AbortSignalWithReason, TaskResult } from './types';\nimport { addAbortSignalListener, catchRejection, noop } from './utils';\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\n\nexport const validateActive = (signal: AbortSignal): void => {\n if (signal.aborted) {\n const {\n reason\n } = (signal as AbortSignalWithReason);\n throw new TaskAbortError(reason);\n }\n};\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\n\nexport function raceWithSignal(signal: AbortSignalWithReason, promise: Promise): Promise {\n let cleanup = noop;\n return new Promise((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\n cleanup = noop;\n });\n}\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\n\nexport const runTask = async (task: () => Promise, cleanUp?: () => void): Promise> => {\n try {\n await Promise.resolve();\n const value = await task();\n return {\n status: 'ok',\n value\n };\n } catch (error: any) {\n return {\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\n error\n };\n } finally {\n cleanUp?.();\n }\n};\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\n\nexport const createPause = (signal: AbortSignal) => {\n return (promise: Promise): Promise => {\n return catchRejection(raceWithSignal(signal, promise).then(output => {\n validateActive(signal);\n return output;\n }));\n };\n};\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\n\nexport const createDelay = (signal: AbortSignal) => {\n const pause = createPause(signal);\n return (timeoutMs: number): Promise => {\n return pause(new Promise(resolve => setTimeout(resolve, timeoutMs)));\n };\n};","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Action, Dispatch, MiddlewareAPI, UnknownAction } from 'redux';\nimport { isAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport { createAction } from '../createAction';\nimport { nanoid } from '../nanoid';\nimport type { ListenerMiddleware, ListenerMiddlewareInstance, AddListenerOverloads, AnyListenerPredicate, CreateListenerMiddlewareOptions, TypedAddListener, TypedCreateListenerEntry, FallbackAddListenerOptions, ListenerEntry, ListenerErrorHandler, UnsubscribeListener, TakePattern, ListenerErrorInfo, ForkedTaskExecutor, ForkedTask, TypedRemoveListener, TaskResult, AbortSignalWithReason, UnsubscribeListenerOptions, ForkOptions } from './types';\nimport { abortControllerWithReason, addAbortSignalListener, assertFunction, catchRejection } from './utils';\nimport { listenerCancelled, listenerCompleted, TaskAbortError, taskCancelled, taskCompleted } from './exceptions';\nimport { runTask, validateActive, createPause, createDelay, raceWithSignal } from './task';\nimport { find } from '../utils';\nexport { TaskAbortError } from './exceptions';\nexport type { ListenerEffect, ListenerMiddleware, ListenerEffectAPI, ListenerMiddlewareInstance, CreateListenerMiddlewareOptions, ListenerErrorHandler, TypedStartListening, TypedAddListener, TypedStopListening, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions, ForkedTaskExecutor, ForkedTask, ForkedTaskAPI, AsyncTaskExecutor, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult } from './types'; //Overly-aggressive byte-shaving\n\nconst {\n assign\n} = Object;\n/**\r\n * @internal\r\n */\n\nconst INTERNAL_NIL_TOKEN = ({} as const);\nconst alm = ('listenerMiddleware' as const);\n\nconst createFork = (parentAbortSignal: AbortSignalWithReason, parentBlockingPromises: Promise[]) => {\n const linkControllers = (controller: AbortController) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n\n return (taskExecutor: ForkedTaskExecutor, opts?: ForkOptions): ForkedTask => {\n assertFunction(taskExecutor, 'taskExecutor');\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask(async (): Promise => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result = (await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n }) as T);\n validateActive(childAbortController.signal);\n return result;\n }, () => abortControllerWithReason(childAbortController, taskCompleted));\n\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result);\n }\n\n return {\n result: createPause>(parentAbortSignal)(result),\n\n cancel() {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n\n };\n };\n};\n\nconst createTakePattern = (startListening: AddListenerOverloads, signal: AbortSignal): TakePattern => {\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\n const take = async

,>(predicate: P, timeout: number | undefined) => {\n validateActive(signal); // Placeholder unsubscribe function until the listener is added\n\n let unsubscribe: UnsubscribeListener = () => {};\n\n const tuplePromise = new Promise<[Action, S, S]>((resolve, reject) => {\n // Inside the Promise, we synchronously add the listener.\n let stopListening = startListening({\n predicate: (predicate as any),\n effect: (action, listenerApi): void => {\n // One-shot listener that cleans up as soon as the predicate passes\n listenerApi.unsubscribe(); // Resolve the promise with the same arguments the predicate saw\n\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises: (Promise | Promise<[Action, S, S]>)[] = [tuplePromise];\n\n if (timeout != null) {\n promises.push(new Promise(resolve => setTimeout(resolve, timeout, null)));\n }\n\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n // Always clean up the listener\n unsubscribe();\n }\n };\n\n return (((predicate: AnyListenerPredicate, timeout: number | undefined) => catchRejection(take(predicate, timeout))) as TakePattern);\n};\n\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator!.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {// pass\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(21) : 'Creating or removing a listener requires one of the known fields for matching an action');\n }\n\n assertFunction(effect, 'options.listener');\n return {\n predicate,\n type,\n effect\n };\n};\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\n\n\nexport const createListenerEntry: TypedCreateListenerEntry = (options: FallbackAddListenerOptions) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const id = nanoid();\n const entry: ListenerEntry = {\n id,\n effect,\n type,\n predicate,\n pending: new Set(),\n unsubscribe: () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(22) : 'Unsubscribe not initialized');\n }\n };\n return entry;\n};\n\nconst cancelActiveListeners = (entry: ListenerEntry>) => {\n entry.pending.forEach(controller => {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\n\nconst createClearListenerMiddleware = (listenerMap: Map) => {\n return () => {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\n\n\nconst safelyNotifyError = (errorHandler: ListenerErrorHandler, errorToNotify: unknown, errorInfo: ListenerErrorInfo): void => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n // We cannot let an error raised here block the listener queue.\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\n/**\r\n * @public\r\n */\n\n\nexport const addListener = (createAction(`${alm}/add`) as TypedAddListener);\n/**\r\n * @public\r\n */\n\nexport const clearAllListeners = createAction(`${alm}/removeAll`);\n/**\r\n * @public\r\n */\n\nexport const removeListener = (createAction(`${alm}/remove`) as TypedRemoveListener);\n\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\n console.error(`${alm}/error`, ...args);\n};\n/**\r\n * @public\r\n */\n\n\nexport function createListenerMiddleware = ThunkDispatch, ExtraArgument = unknown>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\n const listenerMap = new Map();\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, 'onError');\n\n const insertEntry = (entry: ListenerEntry) => {\n entry.unsubscribe = () => listenerMap.delete(entry!.id);\n\n listenerMap.set(entry.id, entry);\n return (cancelOptions?: UnsubscribeListenerOptions) => {\n entry.unsubscribe();\n\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n\n const startListening = (options: FallbackAddListenerOptions) => {\n let entry = find(Array.from(listenerMap.values()), existingEntry => existingEntry.effect === options.effect);\n\n if (!entry) {\n entry = createListenerEntry((options as any));\n }\n\n return insertEntry(entry);\n };\n\n const stopListening = (options: FallbackAddListenerOptions & UnsubscribeListenerOptions): boolean => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n const entry = find(Array.from(listenerMap.values()), entry => {\n const matchPredicateOrType = typeof type === 'string' ? entry.type === type : entry.predicate === predicate;\n return matchPredicateOrType && entry.effect === effect;\n });\n\n if (entry) {\n entry.unsubscribe();\n\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n\n return !!entry;\n };\n\n const notifyListener = async (entry: ListenerEntry>, action: unknown, api: MiddlewareAPI, getOriginalState: () => S) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern(startListening, internalTaskController.signal);\n const autoJoinPromises: Promise[] = [];\n\n try {\n entry.pending.add(internalTaskController);\n await Promise.resolve(entry.effect(action, // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate: AnyListenerPredicate, timeout?: number) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n abortControllerWithReason(internalTaskController, listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: 'effect'\n });\n }\n } finally {\n await Promise.allSettled(autoJoinPromises);\n abortControllerWithReason(internalTaskController, listenerCompleted); // Notify that the task has completed\n\n entry.pending.delete(internalTaskController);\n }\n };\n\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n\n const middleware: ListenerMiddleware = api => next => action => {\n if (!isAction(action)) {\n // we only want to notify listeners for action objects\n return next(action);\n }\n\n if (addListener.match(action)) {\n return startListening(action.payload);\n }\n\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n } // Need to get this state _before_ the reducer processes the action\n\n\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState(); // `getOriginalState` can only be called synchronously.\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\n\n const getOriginalState = (): S => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(23) : `${alm}: getOriginalState can only be called synchronously`);\n }\n\n return (originalState as S);\n };\n\n let result: unknown;\n\n try {\n // Actually forward the action to the reducer before we handle listeners\n result = next(action);\n\n if (listenerMap.size > 0) {\n let currentState = api.getState(); // Work around ESBuild+TS transpilation issue\n\n const listenerEntries = Array.from(listenerMap.values());\n\n for (let entry of listenerEntries) {\n let runListener = false;\n\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: 'predicate'\n });\n }\n\n if (!runListener) {\n continue;\n }\n\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n // Remove `originalState` store from this scope.\n originalState = INTERNAL_NIL_TOKEN;\n }\n\n return result;\n };\n\n return ({\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n } as ListenerMiddlewareInstance);\n}","import { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { UnknownAction, Reducer, StateFromReducersMapObject } from 'redux';\nimport { combineReducers } from 'redux';\nimport { nanoid } from './nanoid';\nimport type { Id, NonUndefined, Tail, UnionToIntersection, WithOptionalProp } from './tsHelpers';\nimport { emplace } from './utils';\ntype SliceLike = {\n reducerPath: ReducerPath;\n reducer: Reducer;\n};\ntype AnySliceLike = SliceLike;\ntype SliceLikeReducerPath = A extends SliceLike ? ReducerPath : never;\ntype SliceLikeState = A extends SliceLike ? State : never;\nexport type WithSlice = { [Path in SliceLikeReducerPath]: SliceLikeState };\ntype ReducerMap = Record;\ntype ExistingSliceLike = { [ReducerPath in keyof DeclaredState]: SliceLike> }[keyof DeclaredState];\nexport type InjectConfig = {\n /**\r\n * Allow replacing reducer with a different reference. Normally, an error will be thrown if a different reducer instance to the one already injected is used.\r\n */\n overrideExisting?: boolean;\n};\n/**\r\n * A reducer that allows for slices/reducers to be injected after initialisation.\r\n */\n\nexport interface CombinedSliceReducer extends Reducer> {\n /**\r\n * Provide a type for slices that will be injected lazily.\r\n *\r\n * One way to do this would be with interface merging:\r\n * ```ts\r\n *\r\n * export interface LazyLoadedSlices {}\r\n *\r\n * export const rootReducer = combineSlices(stringSlice).withLazyLoadedSlices();\r\n *\r\n * // elsewhere\r\n *\r\n * declare module './reducer' {\r\n * export interface LazyLoadedSlices extends WithSlice {}\r\n * }\r\n *\r\n * const withBoolean = rootReducer.inject(booleanSlice);\r\n *\r\n * // elsewhere again\r\n *\r\n * declare module './reducer' {\r\n * export interface LazyLoadedSlices {\r\n * customName: CustomState\r\n * }\r\n * }\r\n *\r\n * const withCustom = rootReducer.inject({ reducerPath: \"customName\", reducer: customSlice.reducer })\r\n * ```\r\n */\n withLazyLoadedSlices(): CombinedSliceReducer>>;\n /**\r\n * Inject a slice.\r\n *\r\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\r\n *\r\n * ```ts\r\n * rootReducer.inject(booleanSlice)\r\n * rootReducer.inject(baseApi)\r\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\r\n * ```\r\n *\r\n */\n\n inject>>(slice: Sl, config?: InjectConfig): CombinedSliceReducer>>;\n /**\r\n * Inject a slice.\r\n *\r\n * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\r\n *\r\n * ```ts\r\n * rootReducer.inject(booleanSlice)\r\n * rootReducer.inject(baseApi)\r\n * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\r\n * ```\r\n *\r\n */\n\n inject(slice: SliceLike, config?: InjectConfig): CombinedSliceReducer>>>;\n /**\r\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\r\n *\r\n * ```ts\r\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\r\n * // ^? boolean | undefined\r\n *\r\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\r\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\r\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\r\n * return state.boolean;\r\n * // ^? boolean\r\n * })\r\n * ```\r\n *\r\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\r\n *\r\n * ```ts\r\n *\r\n * export interface LazyLoadedSlices {};\r\n *\r\n * export const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices();\r\n *\r\n * export const rootReducer = combineSlices({ inner: innerReducer });\r\n *\r\n * export type RootState = ReturnType;\r\n *\r\n * // elsewhere\r\n *\r\n * declare module \"./reducer.ts\" {\r\n * export interface LazyLoadedSlices extends WithSlice {}\r\n * }\r\n *\r\n * const withBool = innerReducer.inject(booleanSlice);\r\n *\r\n * const selectBoolean = withBool.selector(\r\n * (state) => state.boolean,\r\n * (rootState: RootState) => state.inner\r\n * );\r\n * // now expects to be passed RootState instead of innerReducer state\r\n *\r\n * ```\r\n *\r\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\r\n *\r\n * ```ts\r\n * const injectedReducer = rootReducer.inject(booleanSlice);\r\n * const selectBoolean = injectedReducer.selector((state) => {\r\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\r\n * return state.boolean\r\n * })\r\n * ```\r\n */\n\n selector: {\n /**\r\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\r\n *\r\n * ```ts\r\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\r\n * // ^? boolean | undefined\r\n *\r\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\r\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\r\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\r\n * return state.boolean;\r\n * // ^? boolean\r\n * })\r\n * ```\r\n *\r\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\r\n *\r\n * ```ts\r\n * const injectedReducer = rootReducer.inject(booleanSlice);\r\n * const selectBoolean = injectedReducer.selector((state) => {\r\n * console.log(injectedReducer.selector.original(state).boolean) // undefined\r\n * return state.boolean\r\n * })\r\n * ```\r\n */\n unknown>(selectorFn: Selector): (state: WithOptionalProp[0], Exclude>, ...args: Tail>) => ReturnType;\n /**\r\n * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\r\n *\r\n * ```ts\r\n * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\r\n * // ^? boolean | undefined\r\n *\r\n * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\r\n * // if action hasn't been dispatched since slice was injected, this would usually be undefined\r\n * // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\r\n * return state.boolean;\r\n * // ^? boolean\r\n * })\r\n * ```\r\n *\r\n * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\r\n *\r\n * ```ts\r\n *\r\n * interface LazyLoadedSlices {};\r\n *\r\n * const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices();\r\n *\r\n * const rootReducer = combineSlices({ inner: innerReducer });\r\n *\r\n * type RootState = ReturnType;\r\n *\r\n * // elsewhere\r\n *\r\n * declare module \"./reducer.ts\" {\r\n * interface LazyLoadedSlices extends WithSlice {}\r\n * }\r\n *\r\n * const withBool = innerReducer.inject(booleanSlice);\r\n *\r\n * const selectBoolean = withBool.selector(\r\n * (state) => state.boolean,\r\n * (rootState: RootState) => state.inner\r\n * );\r\n * // now expects to be passed RootState instead of innerReducer state\r\n *\r\n * ```\r\n *\r\n * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\r\n *\r\n * ```ts\r\n * const injectedReducer = rootReducer.inject(booleanSlice);\r\n * const selectBoolean = injectedReducer.selector((state) => {\r\n * console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\r\n * return state.boolean\r\n * })\r\n * ```\r\n */\n\n unknown, RootState>(selectorFn: Selector, selectState: (rootState: RootState, ...args: Tail>) => WithOptionalProp[0], Exclude>): (state: RootState, ...args: Tail>) => ReturnType;\n /**\r\n * Returns the unproxied state. Useful for debugging.\r\n * @param state state Proxy, that ensures injected reducers have value\r\n * @returns original, unproxied state\r\n * @throws if value passed is not a state Proxy\r\n */\n\n original: (state: DeclaredState) => InitialState & Partial;\n };\n}\ntype InitialState> = UnionToIntersection : StateFromReducersMapObject : never>;\n\nconst isSliceLike = (maybeSliceLike: AnySliceLike | ReducerMap): maybeSliceLike is AnySliceLike => 'reducerPath' in maybeSliceLike && typeof maybeSliceLike.reducerPath === 'string';\n\nconst getReducers = (slices: Array) => slices.flatMap(sliceOrMap => isSliceLike(sliceOrMap) ? [([sliceOrMap.reducerPath, sliceOrMap.reducer] as const)] : Object.entries(sliceOrMap));\n\nconst ORIGINAL_STATE = Symbol.for('rtk-state-proxy-original');\n\nconst isStateProxy = (value: any) => !!value && !!value[ORIGINAL_STATE];\n\nconst stateProxyMap = new WeakMap();\n\nconst createStateProxy = (state: State, reducerMap: Partial>) => (emplace(stateProxyMap, state, {\n insert: () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE) return target;\n const result = Reflect.get(target, prop, receiver);\n\n if (typeof result === 'undefined') {\n const reducer = reducerMap[prop.toString()];\n\n if (reducer) {\n // ensure action type is random, to prevent reducer treating it differently\n const reducerResult = reducer(undefined, {\n type: nanoid()\n });\n\n if (typeof reducerResult === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n }\n\n return reducerResult;\n }\n }\n\n return result;\n }\n })\n}) as State);\n\nconst original = (state: any) => {\n if (!isStateProxy(state)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(25) : 'original must be used on state Proxy');\n }\n\n return state[ORIGINAL_STATE];\n};\n\nexport function combineSlices]>(...slices: Slices): CombinedSliceReducer>> {\n const reducerMap = Object.fromEntries(getReducers(slices));\n\n const getReducer = () => combineReducers(reducerMap);\n\n let reducer = getReducer();\n\n function combinedReducer(state: Record, action: UnknownAction) {\n return reducer(state, action);\n }\n\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n\n const inject = (slice: AnySliceLike, config: InjectConfig = {}): typeof combinedReducer => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n\n return combinedReducer;\n }\n\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n\n const selector = Object.assign(function makeSelector(selectorFn: (state: State, ...args: Args) => any, selectState?: (rootState: RootState, ...args: Args) => State) {\n return function selector(state: State, ...args: Args) {\n return selectorFn(createStateProxy(selectState ? selectState((state as any), ...args) : state, reducerMap), ...args);\n };\n }, {\n original\n });\n return (Object.assign(combinedReducer, {\n inject,\n selector\n }) as any);\n}","/**\r\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\r\n *\r\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\r\n * during build.\r\n * @param {number} code\r\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","// import { PayloadAction, createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\n// interface SourcesState {\n// value: number;\n// }\n\nconst initialState = {\n items: [],\n activeId: \"\",\n isActive: false,\n};\n\nconst sourcesSlice = createSlice({\n name: \"sources\",\n initialState,\n reducers: {\n setSources: (state, action) => {\n // state.items = [...action.payload]\n // state = { ...state, items: action.payload };\n state.items = action.payload\n },\n setActiveId: (state, action) => {\n state.activeId = `${action.payload}`\n },\n setIsSourcesActive: (state, action) => {\n state.isActive = action.payload\n },\n },\n // extraReducers(builder) {\n // builder\n // .addCase(incrementAsync.pending, () => {\n // console.log(\"incrementAsync.pending\");\n // })\n // .addCase(incrementAsync.fulfilled, (state, action) => {\n // state.items.push(action.payload);\n // })\n // },\n});\n\n// export const incrementAsync = createAsyncThunk(\n// \"sources/incrementAsync\",\n// async (amount) => {\n// await new Promise((resolve) => setTimeout(resolve, 1000));\n// return amount;\n// }\n// )\n\nexport const { setSources, setActiveId, setIsSourcesActive } = sourcesSlice.actions;\n\nexport default sourcesSlice.reducer;","import ArrowRightIcon from \"components/icons/ArrowRightIcon\";\nimport CopeIcon from \"components/icons/CopeIcon\";\nimport DislikeIcon from \"components/icons/DislikeIcon\";\nimport LikeIcon from \"components/icons/LikeIcon\";\nimport RefreshIcon from \"components/icons/RefreshIcon\";\nimport TickIcon from \"components/icons/TickIcon\";\nimport { useMemo, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { trackButton } from \"util/tracking\";\n\nimport {\n setSources,\n setActiveId,\n setIsSourcesActive,\n} from \"state/sources/sourcesSlice\";\nimport { TrackEvent } from \"util/util\";\n\nexport default function ChatBubbleAction({\n reloadCallback,\n chat,\n glossaryProps,\n}) {\n const {\n response,\n id,\n isLiked: isLikedDefault,\n isDisliked: isDislikedDefault,\n isReloaded: isReloadedDefault,\n } = chat;\n\n const dispatch = useDispatch();\n const currentSourcesId = useSelector((state) => state.sources.activeId);\n const isActive = useSelector((state) => state.sources.isActive);\n const apiLog = useSelector((state) => state.ui.integration);\n const loading = useSelector((state) => state.ui.loading);\n\n const [isCopied, setIsCopied] = useState(false);\n const [isLiked, setIsLiked] = useState(isLikedDefault);\n const [isDisliked, setIsDisliked] = useState(isDislikedDefault);\n const [isReloaded, setIsReloaded] = useState(isReloadedDefault);\n\n const chatSources = useMemo(() => {\n if (\"sources\" in chat && chat.sources.length > 0) {\n return [...chat.sources];\n }\n\n return [];\n }, [chat]);\n\n const rateChat = (flag) => (e) => {\n e.preventDefault();\n\n setIsLiked(flag);\n setIsDisliked(!flag);\n\n console.log(\"rate\", flag, chat?.response);\n\n trackButton({\n label: flag ? \"Like\" : \"Dislike\",\n message_id: id,\n });\n TrackEvent(apiLog, \"chatbot_rating_click\", {\n label: flag ? \"better\" : \"worse\",\n value: id,\n });\n };\n\n const copyResponse = (text) => (e) => {\n e.preventDefault();\n console.log(\"copy\", text);\n\n trackButton({ label: \"Copy\", message_id: id, event_type: \"interaction\" });\n TrackEvent(apiLog, \"chatbot_response_copy\", {\n label: \"copy\",\n value: id,\n });\n copyTextToClipboard(text)\n .then(() => {\n // If successful, update the isCopied state value\n setIsCopied(true);\n setTimeout(() => {\n setIsCopied(false);\n }, 1500);\n })\n .catch((err) => {\n console.log(err);\n });\n };\n\n // This is the function we wrote earlier\n async function copyTextToClipboard(text) {\n if (\"clipboard\" in navigator) {\n return await navigator.clipboard.writeText(text);\n } else {\n return document.execCommand(\"copy\", true, text);\n }\n }\n\n const reloadHandler = (text) => (e) => {\n if (typeof reloadCallback === \"function\") {\n reloadCallback(e, text);\n setIsReloaded(true);\n trackButton({\n label: \"Refresh\",\n message_id: id,\n });\n }\n };\n\n const onSourceClick = () => {\n if (isActive && currentSourcesId === id) {\n dispatch(setIsSourcesActive(false));\n return;\n }\n // sourcesCallback(sources, id);\n dispatch(setSources(chatSources));\n dispatch(setActiveId(id));\n dispatch(setIsSourcesActive(true));\n };\n\n return (\n

\n );\n}\n","export default function UserAvatarIcon() {\n return (\n \n \n \n \n \n );\n}\n","export default function LinkIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n value =\n buffer +\n (typeof value === 'string'\n ? value.toString()\n : new TextDecoder(encoding || undefined).decode(value))\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | null | undefined | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {undefined | void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n * Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n * Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n * @property {CompileData} data\n * Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse, postprocess, preprocess} from 'micromark'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n switch (event[1].type) {\n case 'listUnordered':\n case 'listOrdered':\n case 'blockQuote': {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n break\n }\n case 'lineEndingBlank': {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n break\n }\n case 'linePrefix':\n case 'listItemValue':\n case 'listItemMarker':\n case 'listItemPrefix':\n case 'listItemPrefixWhitespace': {\n // Empty.\n\n break\n }\n default: {\n atMarker = undefined\n }\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n listItem = item\n events.splice(index, 0, ['enter', item, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {undefined}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Nodes} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {undefined}\n * Nothing.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = parent.children\n siblings.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n }\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {undefined}\n * Nothing.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n this.data.expectingFirstListItemValue = undefined\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return\n this.buffer()\n this.data.flowCodeInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n this.data.flowCodeInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n /** @type {Array} */\n const siblings = node.children\n let tail = siblings[siblings.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n }\n siblings.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n this.data.atHardBreak = undefined\n return\n }\n if (\n !this.data.setextHeadingSlurpLineEnding &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n this.data.referenceType = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n this.data.inReference = true\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n this.data.referenceType = 'full'\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = this.data.characterReferenceType\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n this.data.characterReferenceType = undefined\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'transforms': {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n break\n }\n case 'enter':\n case 'exit': {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n break\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {string, text} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// Register `Raw` in tree:\n/// \n\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-to-jsx-runtime').Components} JsxRuntimeComponents\n * @typedef {import('remark-rehype').Options} RemarkRehypeOptions\n * @typedef {import('unist-util-visit').BuildVisitor} Visitor\n * @typedef {import('unified').PluggableList} PluggableList\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n *\n * @typedef {Partial} Components\n * Map tag names to components.\n *\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n *\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n *\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\n// @ts-expect-error: untyped.\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {JSX.Element}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {Visitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {import('unist-util-visit-parents').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩‍❤️‍👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩‍❤️‍👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').ConstructName} ConstructName\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can’t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\n\nemphasis.peek = emphasisPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker)\n exit()\n return value\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').State} State\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../types.js').State} State\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there’s a url…\n node.url &&\n // And there’s a no title…\n !node.title &&\n // And the content of `node` is a single text node…\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content…\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Exit} Exit\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there’s no url but there is a title…\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we’re in phrasing, because escapes don’t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkStrong} from '../util/check-strong.js'\n\nstrong.peek = strongPeek\n\n// To do: there are cases where emphasis cannot “form” depending on the\n// previous or next character of sequences.\n// There’s no way around that though, except for injecting zero-width stuff.\n// Do we need to safeguard against that?\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker + marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n )\n value += tracker.move(marker + marker)\n exit()\n return value\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there’s no info…\n !node.lang &&\n // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n","/**\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there’s no url, or…\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size…\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn’t matter that\n // we’ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value =\n '&#x' +\n value.charCodeAt(0).toString(16).toUpperCase() +\n ';' +\n value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../types.js').State} State\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there’s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there’s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // …because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return fn.call(state, node, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n","/**\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../types.js').State} State\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n","/**\n * @typedef {import('../types.js').Options} Options\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We’re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n }\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: .\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [singleTilde=true]\n * Whether to support strikethrough with a single tilde (default: `true`).\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0]\n })\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n )\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {undefined}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly} context\n * @param {Readonly} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly} map\n * @param {Readonly} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Readonly>} events\n * @param {number} index\n * @returns {Readonly}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\n }\n}\n","/// \n/// \n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-gfm').Options} MdastOptions\n * @typedef {import('micromark-extension-gfm').Options} MicromarkOptions\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {MicromarkOptions & MdastOptions} Options\n * Configuration.\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n","import React, { useEffect, useId, useRef } from \"react\";\n\nimport { useSelector } from \"react-redux\";\n\nimport ChatBubbleAction from \"./ChatBubbleAction\";\nimport HFAvatar from \"assets/icons/hb-avatar-chat.png\";\nimport UserAvatarIcon from \"components/icons/UserAvatarIcon\";\nimport LinkIcon from \"components/icons/LinkIcon\";\nimport Markdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nconst ChatBubble = ({ chat, reloadCallback, glossaryProps }) => {\n const chatID = useId();\n const bubbleRef = useRef(null);\n\n const { user, question, response, id } = chat;\n\n const loading = useSelector((state) => state.ui.loading);\n\n let relatedQuestions = [];\n\n if (\"related\" in chat && chat.related.length > 0) {\n relatedQuestions = [...chat.related];\n }\n useEffect(() => {\n bubbleRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }, []);\n\n return (\n
\n \n {chat?.user ? (\n
\n \n
\n ) : (\n \"\"\n )}\n\n \n \n
\n {user ? (\n question\n ) : typeof response === \"string\" ? ( // Ignore when response is loading\n {response}\n ) : (\n response\n )}\n
\n {!user && question && response && chat.id !== \"-1\" && (\n \n )}\n
\n
\n\n {relatedQuestions.length > 0 && (\n
\n {glossaryProps?.relatedQuestionsDesc && (\n
\n {glossaryProps?.relatedQuestionsDesc}\n
\n )}\n {relatedQuestions.length > 0 &&\n relatedQuestions.map((relatedQuestion, i) => (\n reloadCallback(e, relatedQuestion)}\n >\n {relatedQuestion}\n \n \n ))}\n
\n )}\n
\n );\n};\n\nexport default ChatBubble;\n","export default function ArrowLeftIcon() {\n return (\n \n \n \n );\n}\n","import React from \"react\";\nimport { TrackEvent, formatDate } from \"util/util\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setIsSourcesActive } from \"state/sources/sourcesSlice\";\nimport ArrowRightIcon from \"./icons/ArrowRightIcon\";\nimport ArrowLeftIcon from \"./icons/ArrowLeftIcon\";\nimport LinkIcon from \"./icons/LinkIcon\";\nimport { trackLink } from \"util/tracking\";\n\nconst Sources = ({ sourcesProps }) => {\n const dispatch = useDispatch();\n const sources = useSelector((state) => state.sources.items);\n const isSourcesActive = useSelector((state) => state.sources.isActive);\n const activeId = useSelector((state) => state.sources.activeId);\n const apiLog = useSelector((state) => state.ui.integration);\n const loading = useSelector((state) => state.ui.loading);\n\n function linkClickHandler(url) {\n trackLink({\n link: url,\n message_id: activeId,\n });\n TrackEvent(apiLog, \"chatbot_citation_click\", {\n label: url,\n });\n }\n\n const onToggleSourceActive = () => {\n // Turn off auto open source when the user close source proactively\n if (isSourcesActive) {\n const r = document.querySelector(\":root\");\n r.style.setProperty(\"--chatbot-sources-auto-open\", \"0\");\n }\n dispatch(setIsSourcesActive(!isSourcesActive));\n };\n\n return (\n
\n
\n \n {isSourcesActive ? : }\n \n
\n
\n
\n
\n {sourcesProps?.title}\n {sources?.length > 0 && ` (${sources?.length})`}\n
\n
\n
\n {sources &&\n sources?.map((c, i) => (\n linkClickHandler(c.url)}\n >\n
\n {c.i && (\n \n )}\n
{c.t}
\n
\n {(c?.d || c?.desc || c?.domain) && (\n
\n {c.d && (\n
\n {formatDate(c.d)}\n
\n )}\n {c.desc && (\n
\n {c.desc}\n
\n )}\n {c.domain && (\n
\n {sourcesProps?.sourceTitle} {c.domain}\n
\n )}\n
\n )}\n
\n \n
\n \n ))}\n
\n {/*
\n dispatch(setIsSourcesActive(false))}\n >\n < Back\n \n
*/}\n
\n
\n );\n};\n\nexport default Sources;\n","// import { PayloadAction, createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\n// interface UiState {\n// value: number;\n// }\n\nconst initialState = {\n loading: false,\n // conversation: window.ai?.api?.conversation || undefined,\n // integration: window.ai?.api?.integration || undefined,\n conversation: \"\",\n integration: \"\",\n input: \"\",\n};\n\nconst uiSlice = createSlice({\n name: \"ui\",\n initialState,\n reducers: {\n setLoading: (state, action) => {\n state.loading = action.payload;\n },\n setConversation: (state, action) => {\n state.conversation = action.payload;\n },\n setIntegration: (state, action) => {\n state.integration = action.payload;\n },\n setInput: (state, action) => {\n state.input = action.payload;\n },\n },\n // extraReducers(builder) {\n // builder\n // .addCase(incrementAsync.pending, () => {\n // console.log(\"incrementAsync.pending\");\n // })\n // .addCase(incrementAsync.fulfilled, (state, action) => {\n // state.items.push(action.payload);\n // })\n // },\n});\n\n// export const incrementAsync = createAsyncThunk(\n// \"loading/incrementAsync\",\n// async (amount) => {\n// await new Promise((resolve) => setTimeout(resolve, 1000));\n// return amount;\n// }\n// )\n\nexport const { setLoading, setConversation, setIntegration, setInput } =\n uiSlice.actions;\n\nexport default uiSlice.reducer;\n","export default function SendIcon() {\n return (\n \n \n \n );\n}\n","import { useSelector, useDispatch } from \"react-redux\";\nimport { setInput } from \"state/ui/uiSlice\";\nimport SendIcon from \"./icons/SendIcon\";\n\nexport default function ChatInput({ sendQuery }) {\n const dispatch = useDispatch();\n\n const loading = useSelector((state) => state.ui.loading);\n const input = useSelector((state) => state.ui.input);\n\n async function handleSubmit(e) {\n e.preventDefault();\n if (!input.trim()) return;\n await sendQuery(input);\n }\n\n return (\n
\n dispatch(setInput(e.target.value))}\n disabled={loading}\n placeholder=\"Ask a question\"\n />\n \n \n );\n}\n","export default function ArrowUpIcon() {\n return (\n \n \n \n );\n}\n","import { useSelector } from \"react-redux\";\nimport ArrowUpIcon from \"./icons/ArrowUpIcon\";\n\nexport default function ChatTrending({\n handlePresetQuestion,\n trendingQuestions,\n trendingTitle,\n accordionTrending,\n setAccordionTrending,\n toggleHandler,\n}) {\n const loading = useSelector((state) => state.ui.loading);\n\n const onTrendingClick = (question) => (e) => {\n handlePresetQuestion(e, question);\n setAccordionTrending(false);\n };\n\n return trendingQuestions?.length ? (\n \n \n {trendingTitle}\n \n \n \n \n
\n {trendingQuestions?.map((q, i) => (\n \n {q.question}\n \n ))}\n
\n
\n ) : null;\n}\n","import ArrowUpIcon from \"components/icons/ArrowUpIcon\";\n\nexport default function ChatDisclaimer({\n accordionDisclaimer,\n toggleHandler,\n disclaimerProps,\n}) {\n return (\n
\n \n
\n );\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","export default function CloseIcon() {\n return (\n \n \n \n \n );\n}\n","import { useHistory } from \"react-router-dom\";\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { setIsSourcesActive } from \"state/sources/sourcesSlice\";\nimport CloseIcon from \"./icons/CloseIcon\";\nimport { trackButton } from \"util/tracking\";\n\nexport default function Header({ headerProps, sourcesProps, sources }) {\n const history = useHistory();\n const dispatch = useDispatch();\n\n const isSourcesActive = useSelector((state) => state.sources.isActive);\n const loading = useSelector((state) => state.ui.loading);\n\n const closeHandler = async (e) => {\n e.preventDefault();\n if (isSourcesActive && window.innerWidth < 1024) {\n dispatch(setIsSourcesActive(false));\n } else if (history.length > 1) {\n await trackButton({\n label: \"chatbot_close\",\n });\n\n history.go(-1);\n }\n };\n\n return (\n
\n
\n
\n {headerProps?.logo ? (\n
\n \"\"\n
\n ) : (\n \n {headerProps?.title}\n \n )}\n {isSourcesActive ? (\n \n {sourcesProps?.title}\n {sources?.length > 0 ? ` (${sources?.length})` : \"\"}\n \n ) : null}\n
\n 1}\n data-source-active={isSourcesActive}\n >\n \n {headerProps?.close}\n \n
\n );\n}\n","import \"assets/styles/App.scss\";\nimport { useEffect, useRef, useState, useCallback } from \"react\";\nimport ChatBubble from \"components/chat-dialog/ChatBubble\";\nimport { chatWithGPTStreaming, initializeGA, TrackEvent } from \"util/util\";\nimport { Guid } from \"js-guid\";\nimport Sources from \"components/Sources\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n setActiveId,\n setSources,\n setIsSourcesActive,\n} from \"state/sources/sourcesSlice\";\nimport {\n setLoading,\n setConversation,\n setIntegration,\n setInput,\n} from \"state/ui/uiSlice\";\nimport ChatInput from \"components/ChatInput\";\nimport ChatTrending from \"components/ChatTrending\";\nimport ChatDisclaimer from \"components/ChatDisclaimer\";\nimport Header from \"components/Header\";\nimport { trackHeartbeat, trackButton } from \"util/tracking\";\n\nif (process.env.NODE_ENV !== \"production\") {\n console.log(\"GA\", process.env.REACT_APP_GA_ID);\n}\n\nlet intervalHeartbeat;\nlet obsChatbotDialog;\n\nfunction App() {\n const dispatch = useDispatch();\n\n const isSourcesActive = useSelector((state) => state.sources.isActive);\n const sources = useSelector((state) => state.sources.items);\n const apiChat = useSelector((state) => state.ui.conversation);\n const apiLog = useSelector((state) => state.ui.integration);\n const loading = useSelector((state) => state.ui.loading);\n\n const [isInline, setIsInline] = useState(false);\n\n // default to large chatbot size\n const [chatSize] = useState(\"l\");\n const [accordionTrending, setAccordionTrending] = useState(true);\n const [accordionDisclaimer, setAccordionDisclaimer] = useState(true);\n const [chats, setChats] = useState([]);\n\n const [trendingQuestions, setTrendingQuestions] = useState([]);\n const [trendingTitle, setTrendingTitle] = useState(\"\");\n\n const [sourcesProps, setSourcesProps] = useState({});\n const [glossaryProps, setGlossaryProps] = useState({});\n const [disclaimerProps, setDisclaimerProps] = useState({});\n const [headerProps, setHeaderProps] = useState({});\n\n const componentRef = useRef(null);\n const refChatbotDialog = useRef(null);\n\n const [, setIsTrackingReady] = useState(false);\n\n const [defaultQuery, setDefaultQuery] = useState(\"\");\n\n const sendQuery = useCallback(\n async (text) => {\n // setLoading(true);\n dispatch(setLoading(true));\n setAccordionDisclaimer(false);\n let history_conversation = [];\n const userMessage = {\n question: text,\n user: true,\n id: `${new Guid().toString()}`,\n };\n\n const sourcesAutoOpen = parseFloat(\n getComputedStyle(document.body).getPropertyValue(\n \"--chatbot-sources-auto-open\"\n ) ?? \"0\"\n );\n\n setChats((prevMessages) => {\n let history = [...prevMessages];\n\n if (!prevMessages?.[0]?.user) {\n history = history.slice(1);\n }\n\n history.forEach((mes) => {\n if (!mes.user) {\n history_conversation.push({\n question: mes.question,\n response: mes.response,\n });\n }\n });\n\n return [...prevMessages, userMessage];\n });\n\n const aiMessage = {\n response:
,\n user: false,\n id: new Guid().toString(),\n };\n setChats((prevMessages) => [...prevMessages, aiMessage]);\n\n // Handle streaming\n function handleStreamingData(res) {\n setChats((prevMessages) => {\n const lastMessage = prevMessages[prevMessages.length - 1];\n\n if (typeof lastMessage.response !== \"string\" && !res) {\n return prevMessages;\n }\n\n return [\n ...prevMessages.slice(0, -1),\n ...(typeof lastMessage.response !== \"string\"\n ? [\n {\n user: false,\n id: new Guid().toString(),\n response: res,\n },\n ]\n : [\n {\n ...lastMessage,\n response: lastMessage.response + res,\n isTyping: true,\n },\n ]),\n ];\n });\n }\n\n // Handle streaming after streaming done\n function handleStreamingDone(messObj) {\n const newAiMessage = { ...messObj, user: false };\n\n dispatch(setSources(newAiMessage.sources));\n dispatch(setActiveId(newAiMessage.id));\n\n console.log(\"Source length: \" + newAiMessage.sources?.length);\n\n dispatch(\n setIsSourcesActive(sourcesAutoOpen && newAiMessage.sources?.length)\n );\n\n setChats((prevMessages) => {\n const lastMessage = prevMessages[prevMessages.length - 1];\n return [\n ...prevMessages.slice(0, -1),\n {\n ...lastMessage,\n ...newAiMessage,\n question: text,\n isTyping: false,\n },\n ];\n });\n\n setTimeout(() => {\n refChatbotDialog.current.scrollTo(\n 0,\n refChatbotDialog.current.scrollHeight\n );\n }, 500);\n\n TrackEvent(apiLog, \"chatbot_search_click\", {\n label: newAiMessage?.question_keywords?.join(\",\"),\n items: newAiMessage?.question_keywords?.map((keyword) => keyword),\n });\n }\n\n await chatWithGPTStreaming(\n text,\n apiChat,\n history_conversation,\n handleStreamingData,\n handleStreamingDone\n );\n\n dispatch(setInput(\"\"));\n dispatch(setLoading(false));\n },\n [apiChat, apiLog, dispatch]\n );\n\n const handlePresetQuestion = useCallback(\n async (e, text) => {\n e.preventDefault();\n if (!text.trim()) return;\n\n await sendQuery(text);\n },\n [sendQuery]\n );\n\n const toggleHandler = useCallback(\n (targetName) => (e) => {\n e.preventDefault();\n switch (targetName) {\n case \"chatbot__trending\":\n setAccordionTrending((prev) => !prev);\n break;\n case \"chatbot__disclaimer\":\n setAccordionDisclaimer((prev) => !prev);\n break;\n default:\n break;\n }\n },\n []\n );\n\n // Init from window.chat\n useEffect(() => {\n setIsTrackingReady(initializeGA());\n if (!window?.ai) return;\n\n if (document.querySelector(\"body.chatbot-always-on\")) {\n setIsInline(true);\n }\n if (window.ai?.header) {\n setHeaderProps({ ...window.ai?.header });\n }\n if (\n window.ai?.api &&\n window.ai?.api?.conversation &&\n window.ai?.api?.integration\n ) {\n dispatch(setConversation(window.ai?.api?.conversation));\n dispatch(setIntegration(window.ai?.api?.integration));\n }\n if (window.ai?.trending && window.ai.trending?.questions) {\n setTrendingQuestions([...window.ai.trending?.questions]);\n setTrendingTitle(window.ai.trending?.title);\n }\n if (window.ai?.chats) {\n setChats(\n window.ai.chats\n .filter((chat, i) => !(chat.user && i === window.ai.chats.length - 1))\n .map((chat, i) => {\n return {\n ...chat,\n id: chat?.message_id || `${new Guid().toString()}`,\n };\n })\n );\n\n const max = window.ai.chats.length - 1;\n let isDefaultQuery = false;\n\n if (window.ai.chats[max]?.user && window.ai.chats[max]?.question) {\n // const fetchData = async (text) => {\n // await sendQuery(text);\n // };\n // fetchData(window.ai.chats[max].question);\n dispatch(setLoading(true));\n isDefaultQuery = window.ai.chats[max].question;\n\n setDefaultQuery(isDefaultQuery);\n }\n }\n if (window.ai?.sources) {\n setSourcesProps({ ...window.ai?.sources });\n }\n if (window.ai?.glossary) {\n setGlossaryProps({ ...window.ai?.glossary });\n }\n if (window.ai?.disclaimer) {\n setDisclaimerProps({ ...window.ai?.disclaimer });\n }\n }, [dispatch]);\n\n useEffect(() => {\n if (!apiChat || defaultQuery === \"\") return;\n const fetchData = async (text) => {\n await sendQuery(text);\n };\n\n fetchData(defaultQuery);\n setDefaultQuery(\"\");\n }, [apiChat, defaultQuery, sendQuery]);\n\n // Tracking heartbeat\n useEffect(() => {\n function handleHeartbeat() {\n clearInterval(intervalHeartbeat);\n\n if (document.visibilityState === \"visible\") {\n trackHeartbeat();\n\n intervalHeartbeat = setInterval(() => {\n trackHeartbeat();\n }, 30_000);\n }\n }\n\n (async function () {\n if (document.referrer) {\n await trackButton({\n label: \"chatbot_load\",\n reference_url: document.referrer,\n });\n }\n\n handleHeartbeat();\n document.addEventListener(\"visibilitychange\", handleHeartbeat);\n })();\n\n return () => {\n document.removeEventListener(\"visibilitychange\", handleHeartbeat);\n clearInterval(intervalHeartbeat);\n };\n }, []);\n\n // Handle scroll to down\n useEffect(() => {\n if (!refChatbotDialog.current || !loading) {\n obsChatbotDialog?.disconnect();\n\n return;\n }\n\n obsChatbotDialog = new MutationObserver(function (mutations, observer) {\n refChatbotDialog.current.scrollTo(\n 0,\n refChatbotDialog.current.scrollHeight\n );\n });\n\n // have the observer observe foo for changes in children\n obsChatbotDialog.observe(refChatbotDialog.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }, [loading]);\n\n // Auto scroll down when toggle source panel\n useEffect(() => {\n if (!refChatbotDialog.current) {\n return;\n }\n\n setTimeout(() => {\n refChatbotDialog.current.scrollTo(\n 0,\n refChatbotDialog.current.scrollHeight\n );\n }, 200);\n }, [isSourcesActive]);\n\n if (!window?.ai) {\n return null;\n }\n\n return (\n \n 0}\n ref={componentRef}\n >\n \n\n
\n
\n
\n {chats?.map((chat) => (\n \n ))}\n
\n \n
\n \n \n \n
\n \n {/* */}\n \n );\n}\n\nexport default App;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport sourcesReducer from './sources/sourcesSlice.js';\nimport uiReducer from './ui/uiSlice.js';\n\nexport const store = configureStore({\n reducer: {\n sources: sourcesReducer,\n ui: uiReducer,\n }\n});\n\n// export type RootState = ReturnType;\n// export type AppDispatch = typeof store.dispatch;\n","import { formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Reducer, ReducersMapObject, Middleware, Action, StoreEnhancer, Store, UnknownAction } from 'redux';\nimport { applyMiddleware, createStore, compose, combineReducers, isPlainObject } from 'redux';\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension';\nimport { composeWithDevTools } from './devtoolsExtension';\nimport type { ThunkMiddlewareFor, GetDefaultMiddleware } from './getDefaultMiddleware';\nimport { buildGetDefaultMiddleware } from './getDefaultMiddleware';\nimport type { ExtractDispatchExtensions, ExtractStoreExtensions, ExtractStateExtensions } from './tsHelpers';\nimport type { Tuple } from './utils';\nimport type { GetDefaultEnhancers } from './getDefaultEnhancers';\nimport { buildGetDefaultEnhancers } from './getDefaultEnhancers';\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production';\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\n\nexport interface ConfigureStoreOptions> = Tuple>, E extends Tuple = Tuple, P = S> {\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\n reducer: Reducer | ReducersMapObject;\n /**\r\n * An array of Redux middleware to install, or a callback receiving `getDefaultMiddleware` and returning a Tuple of middleware.\r\n * If not supplied, defaults to the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\n\n middleware?: (getDefaultMiddleware: GetDefaultMiddleware) => M;\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\n\n devTools?: boolean | DevToolsOptions;\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\n // we infer here, and instead complain if the reducer doesn't match\n\n preloadedState?: P;\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive a `getDefaultEnhancers` function that returns a Tuple,\r\n * and should return a Tuple of enhancers (such as `getDefaultEnhancers().concat(offline)`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\n\n enhancers?: (getDefaultEnhancers: GetDefaultEnhancers) => E;\n}\nexport type Middlewares = ReadonlyArray>;\ntype Enhancers = ReadonlyArray;\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\n\nexport type EnhancedStore = ExtractStoreExtensions & Store, A>;\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\n\nexport function configureStore> = Tuple<[ThunkMiddlewareFor]>, E extends Tuple = Tuple<[StoreEnhancer<{\n dispatch: ExtractDispatchExtensions;\n}>, StoreEnhancer]>, P = S>(options: ConfigureStoreOptions): EnhancedStore {\n const getDefaultMiddleware = buildGetDefaultMiddleware();\n const {\n reducer = undefined,\n middleware,\n devTools = true,\n preloadedState = undefined,\n enhancers = undefined\n } = options || {};\n let rootReducer: Reducer;\n\n if (typeof reducer === 'function') {\n rootReducer = reducer;\n } else if (isPlainObject(reducer)) {\n rootReducer = ((combineReducers(reducer) as unknown) as Reducer);\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(1) : '`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n }\n\n if (!IS_PRODUCTION && middleware && typeof middleware !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(2) : '`middleware` field must be a callback');\n }\n\n let finalMiddleware: Tuple>;\n\n if (typeof middleware === 'function') {\n finalMiddleware = middleware(getDefaultMiddleware);\n\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(3) : 'when using a middleware builder function, an array of middleware must be returned');\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n\n if (!IS_PRODUCTION && finalMiddleware.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(4) : 'each middleware provided to configureStore must be a function');\n }\n\n let finalCompose = compose;\n\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: !IS_PRODUCTION,\n ...(typeof devTools === 'object' && devTools)\n });\n }\n\n const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers(middlewareEnhancer);\n\n if (!IS_PRODUCTION && enhancers && typeof enhancers !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(5) : '`enhancers` field must be a callback');\n }\n\n let storeEnhancers = typeof enhancers === 'function' ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n\n if (!IS_PRODUCTION && !Array.isArray(storeEnhancers)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(6) : '`enhancers` callback must return an array');\n }\n\n if (!IS_PRODUCTION && storeEnhancers.some((item: any) => typeof item !== 'function')) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(7) : 'each enhancer provided to configureStore must be a function');\n }\n\n if (!IS_PRODUCTION && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error('middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`');\n }\n\n const composedEnhancer: StoreEnhancer = finalCompose(...storeEnhancers);\n return createStore(rootReducer, (preloadedState as P), composedEnhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport compose from './compose';\nimport { Middleware, MiddlewareAPI } from './types/middleware';\nimport { StoreEnhancer, Dispatch } from './types/store';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param middlewares The middleware chain to be applied.\n * @returns A store enhancer applying the middleware.\n *\n * @template Ext Dispatch signature added by a middleware.\n * @template S The type of the state supported by a middleware.\n */\nexport default function applyMiddleware(): StoreEnhancer;\nexport default function applyMiddleware(middleware1: Middleware): StoreEnhancer<{\n dispatch: Ext1;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware, middleware4: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4;\n}>;\nexport default function applyMiddleware(middleware1: Middleware, middleware2: Middleware, middleware3: Middleware, middleware4: Middleware, middleware5: Middleware): StoreEnhancer<{\n dispatch: Ext1 & Ext2 & Ext3 & Ext4 & Ext5;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer<{\n dispatch: Ext;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer {\n return createStore => (reducer, preloadedState) => {\n const store = createStore(reducer, preloadedState);\n let dispatch: Dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n const middlewareAPI: MiddlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './assets/styles/index.scss';\nimport App from './App';\n// import reportWebVitals from './reportWebVitals';\nimport { BrowserRouter } from \"react-router-dom\";\nimport { Provider } from 'react-redux';\nimport { store } from './state/store';\n\nconst root = ReactDOM.createRoot(document.getElementById('ai'));\n\nroot.render(\n \n \n \n \n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","arr","Array","call","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","options","name","enumerable","configurable","value","newValue","writable","getProperty","module","exports","extend","src","copy","copyIsArray","clone","arguments","i","length","deep","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","descriptor","e","b","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","content","errorsList","error","msg","err","Error","reason","filename","silent","push","re","exec","slice","comments","rules","comment","pos","charAt","declaration","prop","val","ret","property","decl","decls","declarations","VALUE_REQUIRED","UNSUPPORTED_TYPE","INVALID_GUID","GenerateGuidV4","isUint8ArrayValidGuid","isStringValidGuid","uint8ArrayToString","stringToUint8Array","ARRAY_LENGTH","BYTE_ORDER","regexValidator","RegExp","convertNumberToHex","hex","guid","regExp","bytes","b1","b2","unescape","charCodeAt","Uint8Array","test","strGuid","char","random","Math","_defineProperty","Guid","guid_constants_1","guid_helpers_1","BytesGuid","StringGuid","isValid","toByteArray","equals","isEmpty","EMPTY","parse","newGuid","guid_1","get","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","pa","isNaN","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","assign","Ma","stack","Na","Oa","prepareStackTrace","set","Reflect","construct","includes","Pa","tag","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","min","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","listener","D","of","has","pf","qf","rf","sf","bind","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","s","undefined","titleCase","redactingEmail","_str","title","smallWords","substr","mightBeEmail","redacted","redactEmail","GA4","_gtag","_interopRequireDefault","_format","_excluded","_excluded2","_excluded3","__esModule","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_typeof","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","ownKeys","enumerableOnly","symbols","filter","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_i","_s","_e","_x","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","o","minLen","len","arr2","_defineProperties","_toPropertyKey","arg","hint","prim","toPrimitive","res","Number","_toPrimitive","_this","Constructor","_classCallCheck","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","_len","args","_key","GA_MEASUREMENT_ID","nonce","gtagUrl","script","async","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieDomain","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","page","hitCallback","entries","reduce","prev","_ref","_ref2","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","config","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","rest","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","params","category","label","transport","fieldObject","reset","protoProps","staticProps","_default","_window","_ga","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","path","defaultDelimiter","delimiter","escaped","prefix","group","modifier","asterisk","partial","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","matches","opts","encode","pretty","token","segment","j","attachKeys","sensitive","strict","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","map","count","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inline_style_parser_1","__importDefault","styleObject","hasIterator","useSyncExternalStoreWithSelector","hasValue","toPropertyKey","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","leafPrototypes","getProto","ns","def","definition","globalThis","Function","toStringTag","React","ReactOriginal","ContextKey","gT","getContext","_gT$ContextKey","contextMap","realContext","ReactReduxContext","notInitialized","createReduxContextHook","useReduxContext","refEquality","createSelectorHook","useReduxContext2","selector","equalityFnOrOptions","equalityFn","devModeChecks","store","subscription","getServerState","stabilityCheck","identityFunctionCheck","wrappedSelector","selectedState","addNestedSub","getState","useSelector","defaultNoopBatch","nullListeners","notify","createSubscription","parentSub","unsubscribe","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","subscribe","first","clear","isSubscribed","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","Provider_default","_ref5","serverState","contextValue","previousState","Context","createStoreHook","useStore","createDispatchHook","useStore2","fn","useDispatch","useSyncExternalStoreWithSelector2","initializeConnect","React2","ArrowRightIcon","_jsx","viewBox","fill","xmlns","CopeIcon","_jsxs","rx","stroke","transform","DislikeIcon","clipPath","LikeIcon","RefreshIcon","fillRule","clipRule","TickIcon","strokeLinecap","TrackEvent","apiLog","ReactGA","getCookie","cookieName","cookieArray","decodeURIComponent","cookie","setCookie","cookieValue","expirationDays","setTime","getTime","expires","toUTCString","formatDate","dateString","Intl","DateTimeFormat","year","day","format","thisArg","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","allOwnKeys","findKey","_global","self","global","isContextDefined","isTypedArray","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isBuffer","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","endsWith","searchString","lastIndex","forEachEntry","pair","matchAll","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","define","toCamelCase","p1","p2","noop","toFiniteNumber","isFinite","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","request","response","captureStackTrace","utils","toJSON","description","fileName","lineNumber","columnNumber","status","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","some","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","parseHeaders","tokensRE","parseTokens","matcher","deleted","deleteHeader","normalize","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","domain","secure","toGMTString","read","remove","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","msie","userAgent","urlParsingNode","originURL","resolveURL","protocol","host","hash","hostname","port","pathname","requestURL","samplesCount","timestamps","firstSampleTS","head","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","XMLHttpRequest","reject","requestData","requestHeaders","onCanceled","withXSRFToken","cancelToken","signal","Boolean","auth","username","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","settle","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","isURLSameOrigin","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","onUploadProgress","upload","cancel","abort","aborted","parseProtocol","send","knownAdapters","http","xhr","xhrAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validator","opt","formatMessage","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","Cancel","all","promises","spread","isAxiosError","formToJSON","getAdapter","trackInteraction","_window$ai","_window$ai$api","sessionId","interaction_type","interaction_content","message_id","reference_url","referrer","session_id","post","api","integration","trackHeartbeat","trackButton","NOTHING","DRAFTABLE","DRAFT_STATE","die","isDraft","isDraftable","_value$constructor","isMap","isSet","objectCtorString","proto","Ctor","each","getArchtype","entry","type_","propOrOldValue","latest","copy_","base_","shallowCopy","freeze","isFrozen","dontMutateFrozenCollections","currentScope","plugins","getPlugin","pluginKey","plugin","getCurrentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","assigned_","autoFreeze_","objectTraps","_desc$get","getDescriptorFromProto","draft_","readPropFromProto","peek","prepareCopy","createProxy","current2","currentState","markChanged","deleteProperty","owner","setPrototypeOf","arrayTraps","useStrictShallowCopy_","parent","proxyMap_","proxySet_","isManual_","traps","revoke","proxy","Proxy","revocable","createProxyProxy","currentImpl","immer","produce","recipe","defaultBase","base2","hasError","ip","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","assertIsFunction","errorMessage","ensureIsArray","item","getDependencies","createSelectorArgs","every","itemTypes","assertIsArrayOfFunctions","Ref","WeakRef","deref","UNTERMINATED","TERMINATED","createCacheNode","weakMapMemoize","fnNode","resultEqualityCheck","lastResult","resultsCount","memoized","cacheNode","objectCache","objectNode","primitiveCache","primitiveNode","terminatedNode","_lastResult$deref","_lastResult","lastResultValue","clearCache","resetResultsCount","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","memoize","memoizeOptions","recomputations","dependencyRecomputations","directlyPassedOptions","resultFunc","combinedOptions","argsMemoize","argsMemoizeOptions","finalMemoizeOptions","finalArgsMemoizeOptions","memoizedResultFunc","inputSelectorResults","inputSelectorArgs","collectInputSelectorResults","resetDependencyRecomputations","resetRecomputations","formatProdErrorMessage","symbol_observable_default","observable","randomString","actionTypes_default","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","listenerId","replaceReducer","nextReducer","outerSubscribe","observer","observeState","observerAsObserver","combineReducers","reducers","reducerKeys","finalReducers","process","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","compose","funcs","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","createSelector2","createDraftSafeSelectorCreator","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","createAction","prepareAction","actionCreator","prepared","isAction","Tuple","_Tuple","super","species","prepend","freezeDraftable","createNextState","emplace","handler","update","insert","inserted","SHOULD_AUTOBATCH","createQueueWithTimer","rAF","requestAnimationFrame","buildGetDefaultEnhancers","middlewareEnhancer","autoBatch","enhancerArray","notifying","shouldNotifyAtEndOfTick","notificationQueued","queueCallback","queueNotification","notifyListeners","listener2","wrappedListener","_action$meta","autoBatchEnhancer","executeReducerBuilderCallback","builderCallback","actionsMap","actionMatchers","defaultCaseReducer","builder","addCase","typeOrActionCreator","addMatcher","addDefaultCase","asyncThunkSymbol","getType","actionKey","wrapSelector","selectState","injected","wrapper","rootState","sliceState","getInitialState","_len11","_key11","unwrapped","createSlice","_creators$asyncThunk","creators","cAT","asyncThunk","reducerPath","payloadCreator","_reducerDefinitionType","withTypes","caseReducer","preparedReducer","prepare","buildReducerCreators","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","sliceMatchers","contextMethods","exposeAction","name2","exposeCaseReducer","buildReducer","extraReducers","finalCaseReducers","initialState","mapOrBuilderCallback","finalActionMatchers","finalDefaultCaseReducer","frozenInitialState","caseReducers","_ref3","reducer2","cr","isDraft2","isDraftable2","createNextState2","createReducer","sM","reducerName","reducerDefinition","reducerDetails","createNotation","isAsyncThunkSliceReducerDefinition","_ref4","maybeReducerWithPrepare","prepareCallback","isCaseReducerWithPrepareDefinition","handleNormalReducerDefinition","settled","handleThunkCaseReducerDefinition","selectSelf","injectedSelectorCache","_reducer","actions","getSelectors","selectorCache","_options$selectors","selectors","selectSlice","injectInto","injectable","pathOpt","reducerPath2","buildCreateSlice","completed","cancelled","alm","sourcesSlice","items","activeId","isActive","setSources","setActiveId","setIsSourcesActive","ChatBubbleAction","reloadCallback","chat","glossaryProps","isLiked","isLikedDefault","isDisliked","isDislikedDefault","isReloaded","isReloadedDefault","currentSourcesId","sources","loading","isCopied","setIsCopied","setIsLiked","setIsDisliked","setIsReloaded","chatSources","rateChat","flag","className","onSourceClick","hideSources","event_type","clipboard","writeText","execCommand","copyTextToClipboard","reloadHandler","question","UserAvatarIcon","cx","cy","LinkIcon","nameRe","nameReJsx","emptyOptions","empty","Schema","normal","space","definitions","Info","attribute","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","increment","checks","types","DefinedInfo","mask","mark","check","values","own","properties","info","attributes","xlink","_","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","hidden","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","itemId","itemProp","itemRef","itemScope","itemType","lang","language","list","loop","low","manifest","max","maxLength","media","minLength","muted","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rows","rowSpan","sandbox","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","wrap","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","operator","orient","orientation","origin","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","$0","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","ruleId","fatal","file","actual","expected","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","stylePropertyNameCase","tableCellAlignToStyle","one","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","argument","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","root","countsByName","Type","dashes","find","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","toDash","$1","urlAttributes","icon","includeImageAlt","includeHtml","parameters","chunkStart","subtokenize","events","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","combineExtensions","extensions","syntaxExtension","extension","hook","right","constructs","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","limit","POSITIVE_INFINITY","enter","consume","exit","tokenize","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","eof","seen","nok","disable","null","blankLine","after","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","_index","_bufferIndex","called","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","parseInt","fromCodePoint","characterEscapeOrReference","decode","$2","fromMarkdown","encoding","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","doc","deserialize","serialized","deserializer","$","out","unpair","BigInt","asString","shouldSkip","TYPE","json","lossy","serializer","structuredClone","normalizeUri","skip","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","reverse","factory","parents","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","subtype","suffix","contents","listItemLoose","tab","trimLines","trimLine","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","counter","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","handle","passThrough","shallow","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","run","bail","trough","pipeline","middlewareIndex","output","middleware","wrapped","fnExpectsCallback","middelware","basename","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","normalizeString","sep","proc","cwd","isUrl","fileUrlOrPath","urlToPath","URL","third","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","part","CallableInstance","names","Processor","Compiler","Parser","attachers","freezeIndex","frozen","namespace","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","ccount","character","findAndReplace","ignored","pairs","tupleOrList","tuple","toExpression","toFunction","toPairs","pairIndex","grandparent","change","matchObject","inConstruct","notInConstruct","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","exitLiteralAutolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","findUrl","findEmail","isCorrectDomain","trailExec","trail","closingParenIndex","openingParens","closingParens","splitUrl","atext","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","tracker","createTracker","move","subexit","safe","associationId","indentLines","containerFlow","blank","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","defaultStringLength","toAlignment","listInScope","none","_1","unsafe","checkQuote","quote","checkEmphasis","compilePattern","formatLinkAsAutolink","resourceLink","checkBullet","bullet","checkRule","rule","phrasing","checkStrong","fence","checkFence","fences","formatCodeAsIndented","longestStreak","rank","literalWithBreak","setext","formatHeadingAsSetext","closeAtx","bulletCurrent","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","listItemIndent","checkListItemIndent","incrementListMarker","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","gfmTableToMarkdown","padding","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","row","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","exitCheck","exitParagraphWithTaskListItem","firstParaghraph","listItemWithTaskListItem","checkable","checkbox","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_gfmAutolinkLiteralWalkedInto","indent","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","replacement","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","strikethrough","EditMap","editMap","at","addImpl","sort","vecs","gfmTableAlign","inDelimiterRow","alignIndex","tokenizeTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","resolveTable","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","gfm","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","tableData","tableHeader","taskListCheckValueChecked","taskListCheckValueUnchecked","gfmToMarkdown","chatID","bubbleRef","user","relatedQuestions","scrollIntoView","behavior","block","question_keywords","isTyping","relatedQuestionsDesc","relatedQuestion","ArrowLeftIcon","sourcesProps","isSourcesActive","linkClickHandler","trackLink","onToggleSourceActive","querySelector","sourceTitle","uiSlice","conversation","setLoading","setConversation","setIntegration","setInput","SendIcon","ChatInput","sendQuery","ArrowUpIcon","ChatTrending","handlePresetQuestion","trendingQuestions","trendingTitle","accordionTrending","setAccordionTrending","toggleHandler","ChatDisclaimer","accordionDisclaimer","disclaimerProps","_setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","isProduction","invariant","condition","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","_React$Component","emitter","on","off","changedBits","createEventEmitter","nextProps","oldValue","_Provider$childContex","_React$Component2","observedBits","_this2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","matched","cacheKey","pathCache","regexp","compilePath$1","_compilePath","createURL","staticHandler","CloseIcon","Header","headerProps","logo","innerWidth","intervalHeartbeat","obsChatbotDialog","_window2","apiChat","isInline","setIsInline","chatSize","setAccordionDisclaimer","chats","setChats","setTrendingQuestions","setTrendingTitle","setSourcesProps","setGlossaryProps","setDisclaimerProps","setHeaderProps","componentRef","refChatbotDialog","setIsTrackingReady","defaultQuery","setDefaultQuery","_getComputedStyle$get","history_conversation","userMessage","sourcesAutoOpen","parseFloat","getComputedStyle","getPropertyValue","prevMessages","_prevMessages$","mes","aiMessage","userInput","apiEndpoint","callbackProcess","callbackDone","Accept","fetch","reader","getReader","decoder","intervalTyping","tempMessage","tempMessageFromAPI","currentIndex","listMessage","isDone","isReference","finalMessage","noAnswerIndicator","_data$choices","_data$choices2","_data$choices$0$conte","_data$choices$0$conte2","dataText","eventTypeText","choices","followup_questions","topShow","top_show","no_answer_indicator","citations","keywords","clearInterval","setInterval","sourceFromResponse","chatWithGPTStreaming","lastMessage","messObj","_newAiMessage$sources2","_newAiMessage$questio","_newAiMessage$questio2","newAiMessage","scrollTo","scrollHeight","keyword","targetName","_window$ai3","_window$ai4","_window$ai4$api","_window$ai5","_window$ai5$api","_window$ai8","_window$ai$trending","_window$ai9","_window$ai10","_window$ai12","_window$ai14","REACT_APP_GA_ID","_window$ai2","_window$ai6","_window$ai6$api","_window$ai7","_window$ai7$api","_window$ai$trending2","_window$ai$trending3","_window$ai11","_window$ai13","_window$ai15","trending","questions","_window$ai$chats$max","_window$ai$chats$max2","isDefaultQuery","glossary","disclaimer","fetchData","handleHeartbeat","visibilityState","_obsChatbotDialog","MutationObserver","mutations","observe","childList","subtree","characterData","disconnect","ChatBubble","Sources","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","ex","isModifiedEvent","Link","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","getDefaultMiddleware","immutableCheck","serializableCheck","actionCreatorCheck","middlewareArray","thunkMiddleware","devTools","enhancers","rootReducer","finalMiddleware","isPlainObject2","finalCompose","compose2","trace","middlewares","createStore2","middlewareAPI","applyMiddleware","getDefaultEnhancers","storeEnhancers","configureStore","sourcesReducer","uiReducer","ReactDOM","getElementById","App"],"sourceRoot":""}