{"version":3,"file":"static/js/main.d4410e87.js","mappings":"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","sources":["pages/shared/Hooks/useConfig.js","pages/shared/functions/pocketbase.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/classnames/index.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/invariant/browser.js","../node_modules/prop-types-extra/lib/isRequiredForA11y.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-icons/lib/esm/iconsManifest.js","../node_modules/react-icons/lib/esm/iconContext.js","../node_modules/react-icons/lib/esm/iconBase.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-overlays/esm/safeFindDOMNode.js","../node_modules/react-query/es/core/focusManager.js","../node_modules/react-query/es/core/logger.js","../node_modules/react-query/es/core/mutation.js","../node_modules/react-query/es/core/notifyManager.js","../node_modules/react-query/es/core/onlineManager.js","../node_modules/react-query/es/core/query.js","../node_modules/react-query/es/core/queryCache.js","../node_modules/react-query/es/core/mutationCache.js","../node_modules/react-query/es/core/infiniteQueryBehavior.js","../node_modules/react-query/es/core/queryClient.js","../node_modules/react-query/es/core/retryer.js","../node_modules/react-query/es/core/subscribable.js","../node_modules/react-query/es/core/utils.js","../node_modules/react-query/es/react/reactBatchedUpdates.js","../node_modules/react-query/es/react/setBatchUpdatesFn.js","../node_modules/react-query/es/react/logger.js","../node_modules/react-query/es/react/setLogger.js","../node_modules/react-query/es/react/QueryClientProvider.js","../node_modules/react-query/es/core/mutationObserver.js","../node_modules/react-query/es/react/useMutation.js","../node_modules/react-query/es/react/utils.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/modules/createNameContext.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/generatePath.js","../node_modules/react-router/modules/Redirect.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","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/scheduler/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/pocketbase/src/ClientResponseError.ts","../node_modules/pocketbase/src/stores/utils/cookie.ts","../node_modules/pocketbase/src/stores/utils/jwt.ts","../node_modules/pocketbase/src/stores/BaseAuthStore.ts","../node_modules/pocketbase/src/stores/LocalAuthStore.ts","../node_modules/pocketbase/src/services/utils/BaseService.ts","../node_modules/pocketbase/src/services/SettingsService.ts","../node_modules/pocketbase/src/services/utils/CrudService.ts","../node_modules/pocketbase/src/services/utils/legacy.ts","../node_modules/pocketbase/src/services/utils/refresh.ts","../node_modules/pocketbase/src/services/AdminService.ts","../node_modules/pocketbase/src/services/utils/options.ts","../node_modules/pocketbase/src/services/RealtimeService.ts","../node_modules/pocketbase/src/services/RecordService.ts","../node_modules/pocketbase/src/services/CollectionService.ts","../node_modules/pocketbase/src/services/LogService.ts","../node_modules/pocketbase/src/services/HealthService.ts","../node_modules/pocketbase/src/services/FileService.ts","../node_modules/pocketbase/src/services/BackupService.ts","../node_modules/pocketbase/src/Client.ts","../node_modules/clsx/dist/clsx.mjs","../webpack/bootstrap","../webpack/runtime/async module","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../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","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@loadable/component/dist/loadable.esm.js","routes.js","@dlex/hooks/useSlots.js","@dlex/components/Layout/slots/LayoutHeader.jsx","@dlex/components/Layout/slots/LayoutBody.jsx","@dlex/components/Layout/slots/LayoutFooter.jsx","@dlex/components/Layout/libs/SideNav.lib.js","@dlex/components/Layout/context/sidenav.js","@dlex/components/Layout/libs/SideMenu.lib.js","@dlex/components/Layout/slots/NavMenu.jsx","@dlex/components/Layout/slots/Nav.jsx","@dlex/components/Layout/Layout.jsx","@dlex/components/ThemeSwitch/ThemeSwitchLib.js","@dlex/components/ThemeSwitch/ThemeSwitch.jsx","layouts/default.jsx","layouts/blank.jsx","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/SelectableContext.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/react-icons/md/index.esm.js","../node_modules/react-bootstrap/esm/AccordionContext.js","../node_modules/react-bootstrap/esm/AccordionCollapse.js","../node_modules/react-bootstrap/esm/AccordionItemContext.js","../node_modules/react-bootstrap/esm/AccordionBody.js","../node_modules/react-bootstrap/esm/AccordionButton.js","../node_modules/react-bootstrap/esm/AccordionHeader.js","../node_modules/react-bootstrap/esm/AccordionItem.js","../node_modules/react-bootstrap/esm/Accordion.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/dom-helpers/esm/isWindow.js","../node_modules/dom-helpers/esm/isDocument.js","../node_modules/react-overlays/esm/isOverflowing.js","../node_modules/react-overlays/esm/manageAriaHidden.js","../node_modules/react-overlays/esm/ModalManager.js","../node_modules/react-overlays/esm/useWaitForDOMRef.js","../node_modules/react-overlays/esm/Modal.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","layouts/Sidebar/Admin/Dropdowns.js","layouts/Sidebar/Admin/useCategory.js","../node_modules/dom-helpers/esm/matches.js","../node_modules/@restart/hooks/esm/useGlobalListener.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-overlays/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/react-overlays/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/react-overlays/esm/usePopper.js","../node_modules/react-overlays/esm/useRootClose.js","../node_modules/react-overlays/esm/ownerDocument.js","../node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","../node_modules/react-overlays/esm/DropdownMenu.js","../node_modules/react-overlays/esm/DropdownToggle.js","../node_modules/react-overlays/esm/Dropdown.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/react-bootstrap/esm/NavContext.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","layouts/Sidebar/Admin/Sidebar.js","layouts/index.js","layouts/connect.jsx","wrappers/PrivateRoute.js","App.js","index.js"],"sourcesContent":["import {useEffect, useState} from \"react\";\r\n\r\nconst configFile = '/config/config.json'\r\n\r\nconst initConfig = \"https://gaylover12233.com\"\r\n\r\n\r\nexport function useConfig() {\r\n const [config, setConfig] = useState(initConfig);\r\n\r\n useEffect(() => {\r\n (async function fetchConfig() {\r\n try {\r\n const response = await (await fetch(configFile)).json();\r\n setConfig(response);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }());\r\n }, []);\r\n\r\n return config;\r\n}\r\n","import PocketBase from \"pocketbase\";\r\n\r\n\r\n\r\n\r\nexport const getUserInfo = async () => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n const userModel = pb.authStore.model;\r\n if (!userModel) return null;\r\n try {\r\n const userRecord = await pb.collection('users').getFirstListItem(`id=\"${userModel.id}\"`);\r\n if (userRecord.id === userModel.id) {\r\n return {\r\n username: userModel.username,\r\n id: userModel.id,\r\n categories: userRecord.categories || userModel.categories || \"\",\r\n trusted: userModel.Trusted\r\n };\r\n } else {\r\n window.location.href = \"/\"\r\n }\r\n } catch (error) {\r\n window.location.href = \"/\"\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\nexport const register = async (username, password) => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n try {\r\n const data = {\r\n \"username\": username,\r\n \"password\": password,\r\n \"passwordConfirm\": password,\r\n };\r\n await pb.collection('users').create(data);\r\n return true\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\nexport const write_log = async (cat, site) => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n try {\r\n const userdata = await getUserInfo();\r\n const data = {\r\n \"User\": userdata.username,\r\n \"Category\": cat,\r\n \"Page\": site\r\n };\r\n await pb.collection('logs').create(data);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport const isAllowedToDomain = async (config) => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n try {\r\n const userdata = await getUserInfo(config);\r\n const domain = await pb.collection('domains').getFullList({ filter: `name = '${window.location.hostname}'`});\r\n return domain.length > 0 && domain.some(item => item.Owner.includes(userdata.id));\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\n\r\nexport async function isUsernameTaken(username) {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n try {\r\n const userList = await pb.collection('domains').getFullList({ filter: `name = '${username}'`, limit: 1 });\r\n console.log(\"Initial Setup? \" + (!userList.length > 0))\r\n return userList.length > 0;\r\n } catch (error) {\r\n if (error.status === 404) {\r\n console.log(error)\r\n return false;\r\n }\r\n throw error;\r\n }\r\n\r\n}\r\nexport const setDomainOwner = async () => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n const user = await getUserInfo()\r\n try {\r\n const data2 = {\r\n \"name\": window.location.hostname,\r\n \"Owner\": user.id,\r\n };\r\n await pb.collection('domains').create(data2);\r\n return true\r\n } catch (error) {\r\n return false;\r\n }\r\n};\r\n\r\n\r\n\r\n","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n return useMemo(function () {\n return mergeRefs(refA, refB);\n }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\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","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\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","'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","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","/**\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","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nconst Button = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n variant,\n size,\n active,\n className,\n type,\n as,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const classes = classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`);\n\n if (props.href) {\n return /*#__PURE__*/_jsx(SafeAnchor, { ...props,\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n });\n }\n\n if (!type && !as) {\n type = 'button';\n }\n\n const Component = as || 'button';\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n type: type,\n className: classes\n });\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n 'aria-label': PropTypes.string,\n onClick: PropTypes.func,\n\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst defaultProps = {\n 'aria-label': 'Close'\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n fluid: false\n};\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n ...props\n}, ref) => {\n const handleEnter = useCallback(node => {\n triggerBrowserReflow(node);\n props.onEnter == null ? void 0 : props.onEnter(node);\n }, [props]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: children.ref,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n })\n });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n as: Component = 'div',\n className,\n type = 'valid',\n tooltip = false,\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n controlId,\n label,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsxs(FormGroup, {\n ref: ref,\n className: classNames(className, bsPrefix),\n controlId: controlId,\n ...props,\n children: [children, /*#__PURE__*/_jsx(\"label\", {\n htmlFor: controlId,\n children: label\n })]\n });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n return /*#__PURE__*/_jsx(\"label\", { ...props,\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n bsSwitchPrefix,\n inline = false,\n disabled = false,\n isValid = false,\n isInvalid = false,\n feedbackTooltip = false,\n feedback,\n className,\n style,\n title = '',\n type = 'checkbox',\n label,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as = 'input',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n const {\n controlId\n } = useContext(FormContext);\n const innerFormContext = useMemo(() => ({\n controlId: id || controlId\n }), [controlId, id]);\n const hasLabel = label != null && label !== false && !children;\n\n const input = /*#__PURE__*/_jsx(FormCheckInput, { ...props,\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: as\n });\n\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: innerFormContext,\n children: /*#__PURE__*/_jsx(\"div\", {\n style: style,\n className: classNames(className, label && bsPrefix, inline && `${bsPrefix}-inline`, type === 'switch' && bsSwitchPrefix),\n children: children || /*#__PURE__*/_jsxs(_Fragment, {\n children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n title: title,\n children: label\n }), (isValid || isInvalid) && /*#__PURE__*/_jsx(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip,\n children: feedback\n })]\n })\n })\n });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n Input: FormCheckInput,\n Label: FormCheckLabel\n});","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('form-floating');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DEVICE_SIZES = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nconst Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'col');\n const spans = [];\n const classes = [];\n DEVICE_SIZES.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span = true,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n\n const infix = brkPoint !== 'xs' ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${prefix}${infix}` : `${prefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, ...spans, ...classes)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n column: false,\n visuallyHidden: false\n};\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'label',\n bsPrefix,\n column,\n visuallyHidden,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n let columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/_jsx(Col, {\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n _jsx(Component, {\n ref: ref,\n className: classes,\n htmlFor: htmlFor,\n ...props\n })\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n return /*#__PURE__*/_jsx(\"input\", { ...props,\n type: \"range\",\n ref: ref,\n className: classNames(className, bsPrefix),\n id: id || controlId\n });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n htmlSize,\n className,\n isValid = false,\n isInvalid = false,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n return /*#__PURE__*/_jsx(\"select\", { ...props,\n size: htmlSize,\n ref: ref,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n id: id || controlId\n });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n as: Component = 'small',\n muted,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, { ...props,\n ref: ref,\n type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n Input: FormCheck.Input,\n Label: FormCheck.Label\n});","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * The Form `ref` will be forwarded to the underlying element,\n * which means, unless it's rendered `as` a composite component,\n * it will be a DOM node, when resolved.\n *\n * @type {ReactRef}\n * @alias ref\n */\n _ref: PropTypes.any,\n\n /**\n * Mark a form as having been validated. Setting it to `true` will\n * toggle any validation styles on the forms elements.\n */\n validated: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n className,\n validated,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'form',\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n Group: FormGroup,\n Control: FormControl,\n Floating: FormFloating,\n Check: FormCheck,\n Switch,\n Label: FormLabel,\n Text: FormText,\n Range: FormRange,\n Select: FormSelect,\n FloatingLabel\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n className,\n type = 'checkbox',\n isValid = false,\n isInvalid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import * as React from 'react'; // TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n type,\n size,\n htmlSize,\n id,\n className,\n isValid = false,\n isInvalid = false,\n plaintext,\n readOnly,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n let classes;\n\n if (plaintext) {\n classes = {\n [`${bsPrefix}-plaintext`]: true\n };\n } else {\n classes = {\n [bsPrefix]: true,\n [`${bsPrefix}-${size}`]: size\n };\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/_jsx(Component, { ...props,\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && `is-valid`, isInvalid && `is-invalid`, type === 'color' && `${bsPrefix}-color`)\n });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback\n});","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n controlId,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const context = useMemo(() => ({\n controlId\n }), [controlId]);\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref\n })\n });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormCheckInput from './FormCheckInput';\nimport InputGroupContext from './InputGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nconst InputGroupCheckbox = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"checkbox\",\n ...props\n })\n});\n\nconst InputGroupRadio = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"radio\",\n ...props\n })\n});\n\n/**\n *\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nconst InputGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n hasValidation,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group'); // Intentionally an empty object. Used in detecting if a dropdown\n // exists under an input group.\n\n const contextValue = useMemo(() => ({}), []);\n return /*#__PURE__*/_jsx(InputGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, hasValidation && 'has-validation')\n })\n });\n});\nInputGroup.displayName = 'InputGroup';\nexport default Object.assign(InputGroup, {\n Text: InputGroupText,\n Radio: InputGroupRadio,\n Checkbox: InputGroupCheckbox\n});","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","import * as React from 'react';\nimport createChainedFunction from './createChainedFunction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nconst SafeAnchor = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'a',\n disabled,\n onKeyDown,\n ...props\n}, ref) => {\n const handleClick = event => {\n const {\n href,\n onClick\n } = props;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n onClick == null ? void 0 : onClick(event);\n };\n\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n });\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {}\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\n\nfunction ThemeProvider({\n prefixes = {},\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: { ...prefixes\n },\n dir\n }), [prefixes, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({ ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, { ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n /* eslint-disable react-hooks/exhaustive-deps */\n\n\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) => children(status, { ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nexport default TransitionWrapper;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction(...funcs) {\n return funcs.filter(f => f != null).reduce((acc, f) => {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction(...args) {\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, {\n displayName = pascalCase(prefix),\n Component,\n defaultProps\n} = {}) {\n const BsComponent = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Tag = Component || 'div',\n ...props\n }, ref) => {\n const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Tag, {\n ref: ref,\n className: classNames(className, resolvedPrefix),\n ...props\n });\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", { ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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';\n\nvar React = require('react');\nvar Scheduler = require('scheduler');\n\nconst Internals = {\n usingClientEntryPoint: false,\n Events: null,\n Dispatcher: {\n current: null\n }\n};\n\n// Do not require this module directly! Use normal `invariant` calls with\n// template literal strings. The messages will be replaced with error codes\n// during build.\nfunction formatProdErrorMessage(code) {\n let url = 'https://react.dev/errors/' + code;\n\n if (arguments.length > 1) {\n url += '?args[]=' + encodeURIComponent(arguments[1]);\n\n for (let i = 2; i < arguments.length; i++) {\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n }\n\n return \"Minified React error #\" + code + \"; visit \" + url + \" for the full message or \" + 'use the non-minified dev environment for full errors and additional ' + 'helpful warnings.';\n}\n\nconst assign = Object.assign;\n\n// -----------------------------------------------------------------------------\n// Killswitch\n//\n// Flags that exist solely to turn off a change in case it causes a regression\n// when it rolls out to prod. We should remove these as soon as possible.\n// -----------------------------------------------------------------------------\n// -----------------------------------------------------------------------------\n// Land or remove (moderate effort)\n//\n// Flags that can be probably deleted or landed, but might require extra effort\n// like migrating internal callers or performance testing.\n// -----------------------------------------------------------------------------\n// TODO: Finish rolling out in www\n\nconst enableClientRenderFallbackOnTextMismatch = true;\nconst enableFormActions = true;\nconst enableAsyncActions = true; // Need to remove didTimeout argument from Scheduler before landing\n// Slated for removal in the future (significant effort)\n//\n// These are experiments that didn't work out, and never shipped, but we can't\n// delete from the codebase until we migrate internal callers.\n// -----------------------------------------------------------------------------\n// Add a callback property to suspense to notify which promises are currently\n// in the update queue. This allows reporting and tracing of what is causing\n// the user to see a loading state.\n//\n// Also allows hydration callbacks to fire when a dehydrated boundary gets\n// hydrated or deleted.\n//\n// This will eventually be replaced by the Transition Tracing proposal.\n\nconst enableSuspenseCallback = false; // Experimental Scope support.\n\nconst enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics.\n\nconst enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\nconst alwaysThrottleRetries = true;\nconst syncLaneExpirationMs = 250;\nconst transitionLaneExpirationMs = 5000; // -----------------------------------------------------------------------------\n// React DOM Chopping Block\n//\n// Similar to main Chopping Block but only flags related to React DOM. These are\n// grouped because we will likely batch all of them into a single major release.\n// -----------------------------------------------------------------------------\n// Disable support for comment nodes as React DOM containers. Already disabled\n// in open source, but www codebase still relies on it. Need to remove.\n\nconst disableCommentsAsDOMContainers = true;\n// Debugging and DevTools\n// -----------------------------------------------------------------------------\n// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,\n// for an experimental timeline tool.\n\nconst enableSchedulingProfiler = false; // Helps identify side effects in render-phase lifecycle hooks and setState\n\nconst enableProfilerTimer = false; // Record durations for commit and passive effects phases.\n\nconst ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nconst ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher; // Since the \"not pending\" value is always the same, we can reuse the\n// same object across all transitions.\n\nconst sharedNotPendingObject = {\n pending: false,\n data: null,\n method: null,\n action: null\n};\nconst NotPending = sharedNotPendingObject;\n\nfunction resolveDispatcher() {\n // Copied from react/src/ReactHooks.js. It's the same thing but in a\n // different package.\n const dispatcher = ReactCurrentDispatcher$2.current;\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\n\nfunction useFormStatus() {\n {\n const dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] We know this exists because of the feature check above.\n\n return dispatcher.useHostTransitionStatus();\n }\n}\nfunction useFormState(action, initialState, permalink) {\n {\n const dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n\n return dispatcher.useFormState(action, initialState, permalink);\n }\n}\n\nconst valueStack = [];\n\nlet index = -1;\n\nfunction createCursor(defaultValue) {\n return {\n current: defaultValue\n };\n}\n\nfunction pop(cursor, fiber) {\n if (index < 0) {\n\n return;\n }\n\n cursor.current = valueStack[index];\n valueStack[index] = null;\n\n index--;\n}\n\nfunction push(cursor, value, fiber) {\n index++;\n valueStack[index] = cursor.current;\n\n cursor.current = value;\n}\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nconst REACT_ELEMENT_TYPE = Symbol.for('react.element');\nconst REACT_PORTAL_TYPE = Symbol.for('react.portal');\nconst REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nconst REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nconst REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nconst REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext\n\nconst REACT_CONSUMER_TYPE = Symbol.for('react.consumer');\nconst REACT_CONTEXT_TYPE = Symbol.for('react.context');\nconst REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nconst REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nconst REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nconst REACT_MEMO_TYPE = Symbol.for('react.memo');\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy');\nconst REACT_SCOPE_TYPE = Symbol.for('react.scope');\nconst REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nconst REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nconst REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nconst REACT_CACHE_TYPE = Symbol.for('react.cache');\nconst REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');\nconst MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nconst FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n const maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nconst contextStackCursor$1 = createCursor(null);\nconst contextFiberStackCursor = createCursor(null);\nconst rootInstanceStackCursor = createCursor(null); // Represents the nearest host transition provider (in React DOM, a <form />)\n// NOTE: Since forms cannot be nested, and this feature is only implemented by\n// React DOM, we don't technically need this to be a stack. It could be a single\n// module variable instead.\n\nconst hostTransitionProviderCursor = createCursor(null); // TODO: This should initialize to NotPendingTransition, a constant\n// imported from the fiber config. However, because of a cycle in the module\n// graph, that value isn't defined during this module's initialization. I can't\n// think of a way to work around this without moving that value out of the\n// fiber config. For now, the \"no provider\" case is handled when reading,\n// inside useHostTransitionStatus.\n\nconst HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n};\n\nfunction requiredContext(c) {\n\n return c;\n}\n\nfunction getCurrentRootHostContainer() {\n return rootInstanceStackCursor.current;\n}\n\nfunction getRootHostContainer() {\n const rootInstance = requiredContext(rootInstanceStackCursor.current);\n return rootInstance;\n}\n\nfunction pushHostContainer(fiber, nextRootInstance) {\n // Push current root instance onto the stack;\n // This allows us to reset root when portals are popped.\n push(rootInstanceStackCursor, nextRootInstance); // Track the context and the Fiber that provided it.\n // This enables us to pop only Fibers that provide unique contexts.\n\n push(contextFiberStackCursor, fiber); // Finally, we need to push the host context to the stack.\n // However, we can't just call getRootHostContext() and push it because\n // we'd have a different number of entries on the stack depending on\n // whether getRootHostContext() throws somewhere in renderer code or not.\n // So we push an empty value first. This lets us safely unwind on errors.\n\n push(contextStackCursor$1, null);\n const nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.\n\n pop(contextStackCursor$1);\n push(contextStackCursor$1, nextRootContext);\n}\n\nfunction popHostContainer(fiber) {\n pop(contextStackCursor$1);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\n\nfunction getHostContext() {\n const context = requiredContext(contextStackCursor$1.current);\n return context;\n}\n\nfunction pushHostContext(fiber) {\n {\n const stateHook = fiber.memoizedState;\n\n if (stateHook !== null) {\n // Only provide context if this fiber has been upgraded by a host\n // transition. We use the same optimization for regular host context below.\n push(hostTransitionProviderCursor, fiber);\n }\n }\n\n const context = requiredContext(contextStackCursor$1.current);\n const nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.\n\n if (context !== nextContext) {\n // Track the context and the Fiber that provided it.\n // This enables us to pop only Fibers that provide unique contexts.\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor$1, nextContext);\n }\n}\n\nfunction popHostContext(fiber) {\n if (contextFiberStackCursor.current === fiber) {\n // Do not pop unless this Fiber provided the current context.\n // pushHostContext() only pushes Fibers that provide unique contexts.\n pop(contextStackCursor$1);\n pop(contextFiberStackCursor);\n }\n\n {\n if (hostTransitionProviderCursor.current === fiber) {\n // Do not pop unless this Fiber provided the current context. This is mostly\n // a performance optimization, but conveniently it also prevents a potential\n // data race where a host provider is upgraded (i.e. memoizedState becomes\n // non-null) during a concurrent event. This is a bit of a flaw in the way\n // we upgrade host components, but because we're accounting for it here, it\n // should be fine.\n pop(hostTransitionProviderCursor); // When popping the transition provider, we reset the context value back\n // to `null`. We can do this because you're not allowd to nest forms. If\n // we allowed for multiple nested host transition providers, then we'd\n // need to reset this to the parent provider's status.\n\n {\n HostTransitionContext._currentValue = null;\n }\n }\n }\n}\n\nconst NoFlags$1 =\n/* */\n0b0000000000000000000000000000;\nconst PerformedWork =\n/* */\n0b0000000000000000000000000001;\nconst Placement =\n/* */\n0b0000000000000000000000000010;\nconst DidCapture =\n/* */\n0b0000000000000000000010000000;\nconst Hydrating =\n/* */\n0b0000000000000001000000000000; // You can change the rest (and add more).\n\nconst Update =\n/* */\n0b0000000000000000000000000100;\n/* Skipped value: 0b0000000000000000000000001000; */\n\nconst ChildDeletion =\n/* */\n0b0000000000000000000000010000;\nconst ContentReset =\n/* */\n0b0000000000000000000000100000;\nconst Callback =\n/* */\n0b0000000000000000000001000000;\n/* Used by DidCapture: 0b0000000000000000000010000000; */\n\nconst ForceClientRender =\n/* */\n0b0000000000000000000100000000;\nconst Ref =\n/* */\n0b0000000000000000001000000000;\nconst Snapshot =\n/* */\n0b0000000000000000010000000000;\nconst Passive$1 =\n/* */\n0b0000000000000000100000000000;\n/* Used by Hydrating: 0b0000000000000001000000000000; */\n\nconst Visibility =\n/* */\n0b0000000000000010000000000000;\nconst StoreConsistency =\n/* */\n0b0000000000000100000000000000; // It's OK to reuse these bits because these flags are mutually exclusive for\n// different fiber types. We should really be doing this for as many flags as\n// possible, because we're about to run out of bits.\n\nconst ScheduleRetry = StoreConsistency;\nconst ShouldSuspendCommit = Visibility;\nconst DidDefer = ContentReset;\nconst LifecycleEffectMask = Passive$1 | Update | Callback | Ref | Snapshot | StoreConsistency; // Union of all commit flags (flags with the lifetime of a particular commit)\n\nconst HostEffectMask =\n/* */\n0b0000000000000111111111111111; // These are not really side effects, but we still reuse this field.\n\nconst Incomplete =\n/* */\n0b0000000000001000000000000000;\nconst ShouldCapture =\n/* */\n0b0000000000010000000000000000;\nconst ForceUpdateForLegacySuspense =\n/* */\n0b0000000000100000000000000000;\nconst Forked =\n/* */\n0b0000000100000000000000000000; // Static tags describe aspects of a fiber that are not specific to a render,\n// e.g. a fiber uses a passive effect (even if there are no updates on this particular render).\n// This enables us to defer more work in the unmount case,\n// since we can defer traversing the tree during layout to look for Passive effects,\n// and instead rely on the static flag as a signal that there may be cleanup work.\n\nconst RefStatic =\n/* */\n0b0000001000000000000000000000;\nconst LayoutStatic =\n/* */\n0b0000010000000000000000000000;\nconst PassiveStatic =\n/* */\n0b0000100000000000000000000000;\nconst MaySuspendCommit =\n/* */\n0b0001000000000000000000000000; // Flag used to identify newly inserted fibers. It isn't reset after commit unlike `Placement`.\n\nconst PlacementDEV =\n/* */\n0b0010000000000000000000000000;\n// don't contain effects, by checking subtreeFlags.\n\nconst BeforeMutationMask = // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n// flag logic (see #20043)\nUpdate | Snapshot | (0);\nconst MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\nconst LayoutMask = Update | Callback | Ref | Visibility; // TODO: Split into PassiveMountMask and PassiveUnmountMask\n\nconst PassiveMask = Passive$1 | Visibility | ChildDeletion; // Union of tags that don't get reset on clones.\n// This allows certain concepts to persist without recalculating them,\n// e.g. whether a subtree contains passive effects or portals.\n\nconst StaticMask = LayoutStatic | PassiveStatic | RefStatic | MaySuspendCommit;\n\n// This module only exists as an ESM wrapper around the external CommonJS\nconst scheduleCallback$3 = Scheduler.unstable_scheduleCallback;\nconst cancelCallback$1 = Scheduler.unstable_cancelCallback;\nconst shouldYield = Scheduler.unstable_shouldYield;\nconst requestPaint = Scheduler.unstable_requestPaint;\nconst now = Scheduler.unstable_now;\nconst getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;\nconst ImmediatePriority = Scheduler.unstable_ImmediatePriority;\nconst UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\nconst NormalPriority$1 = Scheduler.unstable_NormalPriority;\nconst LowPriority = Scheduler.unstable_LowPriority;\nconst IdlePriority = Scheduler.unstable_IdlePriority; // this doesn't actually exist on the scheduler, but it *does*\n// on scheduler/unstable_mock, which we'll need for internal testing\n\nconst log$1 = Scheduler.log;\nconst unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n\nlet rendererID = null;\nlet injectedHook = null;\nfunction injectInternals(internals) {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // No DevTools\n return false;\n }\n\n const hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook.isDisabled) {\n // This isn't a real property on the hook, but it can be set to opt out\n // of DevTools integration and associated warnings and logs.\n // https://github.com/facebook/react/issues/3877\n return true;\n }\n\n if (!hook.supportsFiber) {\n\n\n return true;\n }\n\n try {\n if (enableSchedulingProfiler) ;\n\n rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.\n\n injectedHook = hook;\n } catch (err) {\n }\n\n if (hook.checkDCE) {\n // This is the real DevTools.\n return true;\n } else {\n // This is likely a hook installed by Fast Refresh runtime.\n return false;\n }\n}\nfunction onCommitRoot(root, eventPriority) {\n if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {\n try {\n const didError = (root.current.flags & DidCapture) === DidCapture;\n\n if (enableProfilerTimer) ; else {\n injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);\n }\n } catch (err) {\n }\n }\n}\nfunction onPostCommitRoot(root) {\n if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === 'function') {\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root);\n } catch (err) {\n }\n }\n}\nfunction onCommitUnmount(fiber) {\n if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {\n try {\n injectedHook.onCommitFiberUnmount(rendererID, fiber);\n } catch (err) {\n }\n }\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n {\n if (typeof log$1 === 'function') {\n // We're in a test because Scheduler.log only exists\n // in SchedulerMock. To reduce the noise in strict mode tests,\n // suppress warnings and disable scheduler yielding during the double render\n unstable_setDisableYieldValue(newIsStrictMode);\n }\n\n if (injectedHook && typeof injectedHook.setStrictMode === 'function') {\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {\n }\n }\n }\n} // Profiler API hooks\n\nfunction injectProfilingHooks(profilingHooks) {\n}\n\nfunction getLaneLabelMap() {\n {\n return null;\n }\n}\n\nconst NoMode =\n/* */\n0b0000000; // TODO: Remove ConcurrentMode by reading from the root tag instead\n\nconst ConcurrentMode =\n/* */\n0b0000001;\nconst ProfileMode =\n/* */\n0b0000010;\nconst StrictLegacyMode =\n/* */\n0b0001000;\nconst StrictEffectsMode =\n/* */\n0b0010000;\n\n// TODO: This is pretty well supported by browsers. Maybe we can drop it.\nconst clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nconst log = Math.log;\nconst LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n const asUint = x >>> 0;\n\n if (asUint === 0) {\n return 32;\n }\n\n return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n// TODO: Ideally these types would be opaque but that doesn't work well with\n// If those values are changed that package should be rebuilt and redeployed.\n\nconst TotalLanes = 31;\nconst NoLanes =\n/* */\n0b0000000000000000000000000000000;\nconst NoLane =\n/* */\n0b0000000000000000000000000000000;\nconst SyncHydrationLane =\n/* */\n0b0000000000000000000000000000001;\nconst SyncLane =\n/* */\n0b0000000000000000000000000000010;\nconst SyncLaneIndex = 1;\nconst InputContinuousHydrationLane =\n/* */\n0b0000000000000000000000000000100;\nconst InputContinuousLane =\n/* */\n0b0000000000000000000000000001000;\nconst DefaultHydrationLane =\n/* */\n0b0000000000000000000000000010000;\nconst DefaultLane =\n/* */\n0b0000000000000000000000000100000;\nconst SyncUpdateLanes = SyncLane | InputContinuousLane | DefaultLane ;\nconst TransitionHydrationLane =\n/* */\n0b0000000000000000000000001000000;\nconst TransitionLanes =\n/* */\n0b0000000001111111111111110000000;\nconst TransitionLane1 =\n/* */\n0b0000000000000000000000010000000;\nconst TransitionLane2 =\n/* */\n0b0000000000000000000000100000000;\nconst TransitionLane3 =\n/* */\n0b0000000000000000000001000000000;\nconst TransitionLane4 =\n/* */\n0b0000000000000000000010000000000;\nconst TransitionLane5 =\n/* */\n0b0000000000000000000100000000000;\nconst TransitionLane6 =\n/* */\n0b0000000000000000001000000000000;\nconst TransitionLane7 =\n/* */\n0b0000000000000000010000000000000;\nconst TransitionLane8 =\n/* */\n0b0000000000000000100000000000000;\nconst TransitionLane9 =\n/* */\n0b0000000000000001000000000000000;\nconst TransitionLane10 =\n/* */\n0b0000000000000010000000000000000;\nconst TransitionLane11 =\n/* */\n0b0000000000000100000000000000000;\nconst TransitionLane12 =\n/* */\n0b0000000000001000000000000000000;\nconst TransitionLane13 =\n/* */\n0b0000000000010000000000000000000;\nconst TransitionLane14 =\n/* */\n0b0000000000100000000000000000000;\nconst TransitionLane15 =\n/* */\n0b0000000001000000000000000000000;\nconst RetryLanes =\n/* */\n0b0000011110000000000000000000000;\nconst RetryLane1 =\n/* */\n0b0000000010000000000000000000000;\nconst RetryLane2 =\n/* */\n0b0000000100000000000000000000000;\nconst RetryLane3 =\n/* */\n0b0000001000000000000000000000000;\nconst RetryLane4 =\n/* */\n0b0000010000000000000000000000000;\nconst SomeRetryLane = RetryLane1;\nconst SelectiveHydrationLane =\n/* */\n0b0000100000000000000000000000000;\nconst NonIdleLanes =\n/* */\n0b0000111111111111111111111111111;\nconst IdleHydrationLane =\n/* */\n0b0001000000000000000000000000000;\nconst IdleLane =\n/* */\n0b0010000000000000000000000000000;\nconst OffscreenLane =\n/* */\n0b0100000000000000000000000000000;\nconst DeferredLane =\n/* */\n0b1000000000000000000000000000000; // Any lane that might schedule an update. This is used to detect infinite\n// update loops, so it doesn't include hydration lanes or retries.\n\nconst UpdateLanes = SyncLane | InputContinuousLane | DefaultLane | TransitionLanes; // This function is used for the experimental timeline (react-devtools-timeline)\nconst NoTimestamp = -1;\nlet nextTransitionLane = TransitionLane1;\nlet nextRetryLane = RetryLane1;\n\nfunction getHighestPriorityLanes(lanes) {\n {\n const pendingSyncLanes = lanes & SyncUpdateLanes;\n\n if (pendingSyncLanes !== 0) {\n return pendingSyncLanes;\n }\n }\n\n switch (getHighestPriorityLane(lanes)) {\n case SyncHydrationLane:\n return SyncHydrationLane;\n\n case SyncLane:\n return SyncLane;\n\n case InputContinuousHydrationLane:\n return InputContinuousHydrationLane;\n\n case InputContinuousLane:\n return InputContinuousLane;\n\n case DefaultHydrationLane:\n return DefaultHydrationLane;\n\n case DefaultLane:\n return DefaultLane;\n\n case TransitionHydrationLane:\n return TransitionHydrationLane;\n\n case TransitionLane1:\n case TransitionLane2:\n case TransitionLane3:\n case TransitionLane4:\n case TransitionLane5:\n case TransitionLane6:\n case TransitionLane7:\n case TransitionLane8:\n case TransitionLane9:\n case TransitionLane10:\n case TransitionLane11:\n case TransitionLane12:\n case TransitionLane13:\n case TransitionLane14:\n case TransitionLane15:\n return lanes & TransitionLanes;\n\n case RetryLane1:\n case RetryLane2:\n case RetryLane3:\n case RetryLane4:\n return lanes & RetryLanes;\n\n case SelectiveHydrationLane:\n return SelectiveHydrationLane;\n\n case IdleHydrationLane:\n return IdleHydrationLane;\n\n case IdleLane:\n return IdleLane;\n\n case OffscreenLane:\n return OffscreenLane;\n\n case DeferredLane:\n // This shouldn't be reachable because deferred work is always entangled\n // with something else.\n return NoLanes;\n\n default:\n\n\n return lanes;\n }\n}\n\nfunction getNextLanes(root, wipLanes) {\n // Early bailout if there's no pending work left.\n const pendingLanes = root.pendingLanes;\n\n if (pendingLanes === NoLanes) {\n return NoLanes;\n }\n\n let nextLanes = NoLanes;\n const suspendedLanes = root.suspendedLanes;\n const pingedLanes = root.pingedLanes; // Do not work on any idle work until all the non-idle work has finished,\n // even if the work is suspended.\n\n const nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n\n if (nonIdlePendingLanes !== NoLanes) {\n const nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n\n if (nonIdleUnblockedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n } else {\n const nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n\n if (nonIdlePingedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n }\n }\n } else {\n // The only remaining work is Idle.\n const unblockedLanes = pendingLanes & ~suspendedLanes;\n\n if (unblockedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(unblockedLanes);\n } else {\n if (pingedLanes !== NoLanes) {\n nextLanes = getHighestPriorityLanes(pingedLanes);\n }\n }\n }\n\n if (nextLanes === NoLanes) {\n // This should only be reachable if we're suspended\n // TODO: Consider warning in this path if a fallback timer is not scheduled.\n return NoLanes;\n } // If we're already in the middle of a render, switching lanes will interrupt\n // it and we'll lose our progress. We should only do this if the new lanes are\n // higher priority.\n\n\n if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n // bother waiting until the root is complete.\n (wipLanes & suspendedLanes) === NoLanes) {\n const nextLane = getHighestPriorityLane(nextLanes);\n const wipLane = getHighestPriorityLane(wipLanes);\n\n if ( // Tests whether the next lane is equal or lower priority than the wip\n // one. This works because the bits decrease in priority as you go left.\n nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n // only difference between default updates and transition updates is that\n // default updates do not support refresh transitions.\n nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes) {\n // Keep working on the existing in-progress tree. Do not interrupt.\n return wipLanes;\n }\n }\n\n return nextLanes;\n}\nfunction getEntangledLanes(root, renderLanes) {\n let entangledLanes = renderLanes;\n\n if ((entangledLanes & InputContinuousLane) !== NoLanes) {\n // When updates are sync by default, we entangle continuous priority updates\n // and default updates, so they render in the same batch. The only reason\n // they use separate lanes is because continuous updates should interrupt\n // transitions, but default updates should not.\n entangledLanes |= entangledLanes & DefaultLane;\n } // Check for entangled lanes and add them to the batch.\n //\n // A lane is said to be entangled with another when it's not allowed to render\n // in a batch that does not also include the other lane. Typically we do this\n // when multiple updates have the same source, and we only want to respond to\n // the most recent event from that source.\n //\n // Note that we apply entanglements *after* checking for partial work above.\n // This means that if a lane is entangled during an interleaved event while\n // it's already rendering, we won't interrupt it. This is intentional, since\n // entanglement is usually \"best effort\": we'll try our best to render the\n // lanes in the same batch, but it's not worth throwing out partially\n // completed work in order to do it.\n // TODO: Reconsider this. The counter-argument is that the partial work\n // represents an intermediate state, which we don't want to show to the user.\n // And by spending extra time finishing it, we're increasing the amount of\n // time it takes to show the final state, which is what they are actually\n // waiting for.\n //\n // For those exceptions where entanglement is semantically important,\n // we should ensure that there is no partial work at the\n // time we apply the entanglement.\n\n\n const allEntangledLanes = root.entangledLanes;\n\n if (allEntangledLanes !== NoLanes) {\n const entanglements = root.entanglements;\n let lanes = entangledLanes & allEntangledLanes;\n\n while (lanes > 0) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n entangledLanes |= entanglements[index];\n lanes &= ~lane;\n }\n }\n\n return entangledLanes;\n}\n\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case SyncHydrationLane:\n case SyncLane:\n case InputContinuousHydrationLane:\n case InputContinuousLane:\n // User interactions should expire slightly more quickly.\n //\n // NOTE: This is set to the corresponding constant as in Scheduler.js.\n // When we made it larger, a product metric in www regressed, suggesting\n // there's a user interaction that's being starved by a series of\n // synchronous updates. If that theory is correct, the proper solution is\n // to fix the starvation. However, this scenario supports the idea that\n // expiration times are an important safeguard when starvation\n // does happen.\n return currentTime + syncLaneExpirationMs;\n\n case DefaultHydrationLane:\n case DefaultLane:\n case TransitionHydrationLane:\n case TransitionLane1:\n case TransitionLane2:\n case TransitionLane3:\n case TransitionLane4:\n case TransitionLane5:\n case TransitionLane6:\n case TransitionLane7:\n case TransitionLane8:\n case TransitionLane9:\n case TransitionLane10:\n case TransitionLane11:\n case TransitionLane12:\n case TransitionLane13:\n case TransitionLane14:\n case TransitionLane15:\n return currentTime + transitionLaneExpirationMs;\n\n case RetryLane1:\n case RetryLane2:\n case RetryLane3:\n case RetryLane4:\n // TODO: Retries should be allowed to expire if they are CPU bound for\n // too long, but when I made this change it caused a spike in browser\n // crashes. There must be some other underlying bug; not super urgent but\n // ideally should figure out why and fix it. Unfortunately we don't have\n // a repro for the crashes, only detected via production metrics.\n return NoTimestamp;\n\n case SelectiveHydrationLane:\n case IdleHydrationLane:\n case IdleLane:\n case OffscreenLane:\n case DeferredLane:\n // Anything idle priority or lower should never expire.\n return NoTimestamp;\n\n default:\n\n return NoTimestamp;\n }\n}\n\nfunction markStarvedLanesAsExpired(root, currentTime) {\n // TODO: This gets called every time we yield. We can optimize by storing\n // the earliest expiration time on the root. Then use that to quickly bail out\n // of this function.\n const pendingLanes = root.pendingLanes;\n const suspendedLanes = root.suspendedLanes;\n const pingedLanes = root.pingedLanes;\n const expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their\n // expiration time. If so, we'll assume the update is being starved and mark\n // it as expired to force it to finish.\n // TODO: We should be able to replace this with upgradePendingLanesToSync\n //\n // We exclude retry lanes because those must always be time sliced, in order\n // to unwrap uncached promises.\n // TODO: Write a test for this\n\n let lanes = pendingLanes & ~RetryLanes;\n\n while (lanes > 0) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n const expirationTime = expirationTimes[index];\n\n if (expirationTime === NoTimestamp) {\n // Found a pending lane with no expiration time. If it's not suspended, or\n // if it's pinged, assume it's CPU-bound. Compute a new expiration time\n // using the current time.\n if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n // Assumes timestamps are monotonically increasing.\n expirationTimes[index] = computeExpirationTime(lane, currentTime);\n }\n } else if (expirationTime <= currentTime) {\n // This lane expired\n root.expiredLanes |= lane;\n }\n\n lanes &= ~lane;\n }\n} // This returns the highest priority pending lanes regardless of whether they\n// are suspended.\n\nfunction getHighestPriorityPendingLanes(root) {\n return getHighestPriorityLanes(root.pendingLanes);\n}\nfunction getLanesToRetrySynchronouslyOnError(root, originallyAttemptedLanes) {\n if (root.errorRecoveryDisabledLanes & originallyAttemptedLanes) {\n // The error recovery mechanism is disabled until these lanes are cleared.\n return NoLanes;\n }\n\n const everythingButOffscreen = root.pendingLanes & ~OffscreenLane;\n\n if (everythingButOffscreen !== NoLanes) {\n return everythingButOffscreen;\n }\n\n if (everythingButOffscreen & OffscreenLane) {\n return OffscreenLane;\n }\n\n return NoLanes;\n}\nfunction includesSyncLane(lanes) {\n return (lanes & (SyncLane | SyncHydrationLane)) !== NoLanes;\n}\nfunction includesNonIdleWork(lanes) {\n return (lanes & NonIdleLanes) !== NoLanes;\n}\nfunction includesOnlyRetries(lanes) {\n return (lanes & RetryLanes) === lanes;\n}\nfunction includesOnlyNonUrgentLanes(lanes) {\n // TODO: Should hydration lanes be included here? This function is only\n // used in `updateDeferredValueImpl`.\n const UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;\n return (lanes & UrgentLanes) === NoLanes;\n}\nfunction includesOnlyTransitions(lanes) {\n return (lanes & TransitionLanes) === lanes;\n}\nfunction includesBlockingLane(root, lanes) {\n\n const SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n return (lanes & SyncDefaultLanes) !== NoLanes;\n}\nfunction includesExpiredLane(root, lanes) {\n // This is a separate check from includesBlockingLane because a lane can\n // expire after a render has already started.\n return (lanes & root.expiredLanes) !== NoLanes;\n}\nfunction isTransitionLane(lane) {\n return (lane & TransitionLanes) !== NoLanes;\n}\nfunction claimNextTransitionLane() {\n // Cycle through the lanes, assigning each new transition to the next lane.\n // In most cases, this means every transition gets its own lane, until we\n // run out of lanes and cycle back to the beginning.\n const lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n\n if ((nextTransitionLane & TransitionLanes) === NoLanes) {\n nextTransitionLane = TransitionLane1;\n }\n\n return lane;\n}\nfunction claimNextRetryLane() {\n const lane = nextRetryLane;\n nextRetryLane <<= 1;\n\n if ((nextRetryLane & RetryLanes) === NoLanes) {\n nextRetryLane = RetryLane1;\n }\n\n return lane;\n}\nfunction getHighestPriorityLane(lanes) {\n return lanes & -lanes;\n}\nfunction pickArbitraryLane(lanes) {\n // This wrapper function gets inlined. Only exists so to communicate that it\n // doesn't matter which bit is selected; you can pick any bit without\n // affecting the algorithms where its used. Here I'm using\n // getHighestPriorityLane because it requires the fewest operations.\n return getHighestPriorityLane(lanes);\n}\n\nfunction pickArbitraryLaneIndex(lanes) {\n return 31 - clz32(lanes);\n}\n\nfunction laneToIndex(lane) {\n return pickArbitraryLaneIndex(lane);\n}\n\nfunction includesSomeLane(a, b) {\n return (a & b) !== NoLanes;\n}\nfunction isSubsetOfLanes(set, subset) {\n return (set & subset) === subset;\n}\nfunction mergeLanes(a, b) {\n return a | b;\n}\nfunction removeLanes(set, subset) {\n return set & ~subset;\n}\nfunction intersectLanes(a, b) {\n return a & b;\n} // Seems redundant, but it changes the type from a single lane (used for\n// updates) to a group of lanes (used for flushing work).\n\nfunction laneToLanes(lane) {\n return lane;\n}\nfunction higherPriorityLane(a, b) {\n // This works because the bit ranges decrease in priority as you go left.\n return a !== NoLane && a < b ? a : b;\n}\nfunction createLaneMap(initial) {\n // Intentionally pushing one by one.\n // https://v8.dev/blog/elements-kinds#avoid-creating-holes\n const laneMap = [];\n\n for (let i = 0; i < TotalLanes; i++) {\n laneMap.push(initial);\n }\n\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane; // If there are any suspended transitions, it's possible this new update\n // could unblock them. Clear the suspended lanes so that we can try rendering\n // them again.\n //\n // TODO: We really only need to unsuspend only lanes that are in the\n // `subtreeLanes` of the updated fiber, or the update lanes of the return\n // path. This would exclude suspended updates in an unrelated sibling tree,\n // since there's no way for this update to unblock it.\n //\n // We don't do this if the incoming update is idle, because we never process\n // idle updates until after all the regular updates have finished; there's no\n // way it could unblock a transition.\n\n if (updateLane !== IdleLane) {\n root.suspendedLanes = NoLanes;\n root.pingedLanes = NoLanes;\n }\n}\nfunction markRootSuspended$1(root, suspendedLanes, spawnedLane) {\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.\n\n const expirationTimes = root.expirationTimes;\n let lanes = suspendedLanes;\n\n while (lanes > 0) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n expirationTimes[index] = NoTimestamp;\n lanes &= ~lane;\n }\n\n if (spawnedLane !== NoLane) {\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n }\n}\nfunction markRootPinged$1(root, pingedLanes) {\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n}\nfunction markRootFinished(root, remainingLanes, spawnedLane) {\n const noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n root.pendingLanes = remainingLanes; // Let's try everything again\n\n root.suspendedLanes = NoLanes;\n root.pingedLanes = NoLanes;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n const entanglements = root.entanglements;\n const expirationTimes = root.expirationTimes;\n const hiddenUpdates = root.hiddenUpdates; // Clear the lanes that no longer have pending work\n\n let lanes = noLongerPendingLanes;\n\n while (lanes > 0) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n entanglements[index] = NoLanes;\n expirationTimes[index] = NoTimestamp;\n const hiddenUpdatesForLane = hiddenUpdates[index];\n\n if (hiddenUpdatesForLane !== null) {\n hiddenUpdates[index] = null; // \"Hidden\" updates are updates that were made to a hidden component. They\n // have special logic associated with them because they may be entangled\n // with updates that occur outside that tree. But once the outer tree\n // commits, they behave like regular updates.\n\n for (let i = 0; i < hiddenUpdatesForLane.length; i++) {\n const update = hiddenUpdatesForLane[i];\n\n if (update !== null) {\n update.lane &= ~OffscreenLane;\n }\n }\n }\n\n lanes &= ~lane;\n }\n\n if (spawnedLane !== NoLane) {\n markSpawnedDeferredLane(root, spawnedLane, // This render finished successfully without suspending, so we don't need\n // to entangle the spawned task with the parent task.\n NoLanes);\n }\n}\n\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n // This render spawned a deferred task. Mark it as pending.\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane; // Entangle the spawned lane with the DeferredLane bit so that we know it\n // was the result of another render. This lets us avoid a useDeferredValue\n // waterfall — only the first level will defer.\n\n const spawnedLaneIndex = laneToIndex(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] |= DeferredLane | // If the parent render task suspended, we must also entangle those lanes\n // with the spawned task, so that the deferred task includes all the same\n // updates that the parent task did. We can exclude any lane that is not\n // used for updates (e.g. Offscreen).\n entangledLanes & UpdateLanes;\n}\n\nfunction markRootEntangled(root, entangledLanes) {\n // In addition to entangling each of the given lanes with each other, we also\n // have to consider _transitive_ entanglements. For each lane that is already\n // entangled with *any* of the given lanes, that lane is now transitively\n // entangled with *all* the given lanes.\n //\n // Translated: If C is entangled with A, then entangling A with B also\n // entangles C with B.\n //\n // If this is hard to grasp, it might help to intentionally break this\n // function and look at the tests that fail in ReactTransition-test.js. Try\n // commenting out one of the conditions below.\n const rootEntangledLanes = root.entangledLanes |= entangledLanes;\n const entanglements = root.entanglements;\n let lanes = rootEntangledLanes;\n\n while (lanes) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n\n if ( // Is this one of the newly entangled lanes?\n lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n entanglements[index] & entangledLanes) {\n entanglements[index] |= entangledLanes;\n }\n\n lanes &= ~lane;\n }\n}\nfunction upgradePendingLaneToSync(root, lane) {\n // Since we're upgrading the priority of the given lane, there is now pending\n // sync work.\n root.pendingLanes |= SyncLane; // Entangle the sync lane with the lane we're upgrading. This means SyncLane\n // will not be allowed to finish without also finishing the given lane.\n\n root.entangledLanes |= SyncLane;\n root.entanglements[SyncLaneIndex] |= lane;\n}\nfunction upgradePendingLanesToSync(root, lanesToUpgrade) {\n // Same as upgradePendingLaneToSync but accepts multiple lanes, so it's a\n // bit slower.\n root.pendingLanes |= SyncLane;\n root.entangledLanes |= SyncLane;\n let lanes = lanesToUpgrade;\n\n while (lanes) {\n const index = pickArbitraryLaneIndex(lanes);\n const lane = 1 << index;\n root.entanglements[SyncLaneIndex] |= lane;\n lanes &= ~lane;\n }\n}\nfunction markHiddenUpdate(root, update, lane) {\n const index = laneToIndex(lane);\n const hiddenUpdates = root.hiddenUpdates;\n const hiddenUpdatesForLane = hiddenUpdates[index];\n\n if (hiddenUpdatesForLane === null) {\n hiddenUpdates[index] = [update];\n } else {\n hiddenUpdatesForLane.push(update);\n }\n\n update.lane = lane | OffscreenLane;\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n const renderLane = getHighestPriorityLane(renderLanes);\n let lane;\n\n if ((renderLane & SyncUpdateLanes) !== NoLane) {\n lane = SyncHydrationLane;\n } else {\n switch (renderLane) {\n case SyncLane:\n lane = SyncHydrationLane;\n break;\n\n case InputContinuousLane:\n lane = InputContinuousHydrationLane;\n break;\n\n case DefaultLane:\n lane = DefaultHydrationLane;\n break;\n\n case TransitionLane1:\n case TransitionLane2:\n case TransitionLane3:\n case TransitionLane4:\n case TransitionLane5:\n case TransitionLane6:\n case TransitionLane7:\n case TransitionLane8:\n case TransitionLane9:\n case TransitionLane10:\n case TransitionLane11:\n case TransitionLane12:\n case TransitionLane13:\n case TransitionLane14:\n case TransitionLane15:\n case RetryLane1:\n case RetryLane2:\n case RetryLane3:\n case RetryLane4:\n lane = TransitionHydrationLane;\n break;\n\n case IdleLane:\n lane = IdleHydrationLane;\n break;\n\n default:\n // Everything else is already either a hydration lane, or shouldn't\n // be retried at a hydration lane.\n lane = NoLane;\n break;\n }\n } // Check if the lane we chose is suspended. If so, that indicates that we\n // already attempted and failed to hydrate at that level. Also check if we're\n // already rendering that lane, which is rare but could happen.\n\n\n if ((lane & (root.suspendedLanes | renderLanes)) !== NoLane) {\n // Give up trying to hydrate and fall back to client render.\n return NoLane;\n }\n\n return lane;\n}\nfunction getTransitionsForLanes(root, lanes) {\n {\n return null;\n }\n}\n\nconst DiscreteEventPriority = SyncLane;\nconst ContinuousEventPriority = InputContinuousLane;\nconst DefaultEventPriority = DefaultLane;\nconst IdleEventPriority = IdleLane;\nlet currentUpdatePriority = NoLane;\nfunction getCurrentUpdatePriority() {\n return currentUpdatePriority;\n}\nfunction setCurrentUpdatePriority(newPriority) {\n currentUpdatePriority = newPriority;\n}\nfunction runWithPriority(priority, fn) {\n const previousPriority = currentUpdatePriority;\n\n try {\n currentUpdatePriority = priority;\n return fn();\n } finally {\n currentUpdatePriority = previousPriority;\n }\n}\nfunction higherEventPriority(a, b) {\n return a !== 0 && a < b ? a : b;\n}\nfunction lowerEventPriority(a, b) {\n return a === 0 || a > b ? a : b;\n}\nfunction isHigherEventPriority(a, b) {\n return a !== 0 && a < b;\n}\nfunction lanesToEventPriority(lanes) {\n const lane = getHighestPriorityLane(lanes);\n\n if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n return DiscreteEventPriority;\n }\n\n if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n return ContinuousEventPriority;\n }\n\n if (includesNonIdleWork(lane)) {\n return DefaultEventPriority;\n }\n\n return IdleEventPriority;\n}\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nconst FunctionComponent = 0;\nconst ClassComponent = 1;\nconst IndeterminateComponent = 2; // Before we know whether it is function or class\n\nconst HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nconst HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nconst HostComponent = 5;\nconst HostText = 6;\nconst Fragment = 7;\nconst Mode = 8;\nconst ContextConsumer = 9;\nconst ContextProvider = 10;\nconst ForwardRef = 11;\nconst Profiler = 12;\nconst SuspenseComponent = 13;\nconst MemoComponent = 14;\nconst SimpleMemoComponent = 15;\nconst LazyComponent = 16;\nconst IncompleteClassComponent = 17;\nconst DehydratedFragment = 18;\nconst SuspenseListComponent = 19;\nconst ScopeComponent = 21;\nconst OffscreenComponent = 22;\nconst LegacyHiddenComponent = 23;\nconst CacheComponent = 24;\nconst TracingMarkerComponent = 25;\nconst HostHoistable = 26;\nconst HostSingleton = 27;\n\nconst randomKey = Math.random().toString(36).slice(2);\nconst internalInstanceKey = '__reactFiber$' + randomKey;\nconst internalPropsKey = '__reactProps$' + randomKey;\nconst internalContainerInstanceKey = '__reactContainer$' + randomKey;\nconst internalEventHandlersKey = '__reactEvents$' + randomKey;\nconst internalEventHandlerListenersKey = '__reactListeners$' + randomKey;\nconst internalEventHandlesSetKey = '__reactHandles$' + randomKey;\nconst internalRootNodeResourcesKey = '__reactResources$' + randomKey;\nconst internalHoistableMarker = '__reactMarker$' + randomKey;\nfunction detachDeletedInstance(node) {\n // TODO: This function is only called on host components. I don't think all of\n // these fields are relevant.\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction precacheFiberNode(hostInst, node) {\n node[internalInstanceKey] = hostInst;\n}\nfunction markContainerAsRoot(hostRoot, node) {\n // $FlowFixMe[prop-missing]\n node[internalContainerInstanceKey] = hostRoot;\n}\nfunction unmarkContainerAsRoot(node) {\n // $FlowFixMe[prop-missing]\n node[internalContainerInstanceKey] = null;\n}\nfunction isContainerMarkedAsRoot(node) {\n // $FlowFixMe[prop-missing]\n return !!node[internalContainerInstanceKey];\n} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.\n// If the target node is part of a hydrated or not yet rendered subtree, then\n// this may also return a SuspenseComponent or HostRoot to indicate that.\n// Conceptually the HostRoot fiber is a child of the Container node. So if you\n// pass the Container node as the targetNode, you will not actually get the\n// HostRoot back. To get to the HostRoot, you need to pass a child of it.\n// The same thing applies to Suspense boundaries.\n\nfunction getClosestInstanceFromNode(targetNode) {\n let targetInst = targetNode[internalInstanceKey];\n\n if (targetInst) {\n // Don't return HostRoot or SuspenseComponent here.\n return targetInst;\n } // If the direct event target isn't a React owned DOM node, we need to look\n // to see if one of its parents is a React owned DOM node.\n\n\n let parentNode = targetNode.parentNode;\n\n while (parentNode) {\n // We'll check if this is a container root that could include\n // React nodes in the future. We need to check this first because\n // if we're a child of a dehydrated container, we need to first\n // find that inner container before moving on to finding the parent\n // instance. Note that we don't check this field on the targetNode\n // itself because the fibers are conceptually between the container\n // node and the first child. It isn't surrounding the container node.\n // If it's not a container, we check if it's an instance.\n targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n\n if (targetInst) {\n // Since this wasn't the direct target of the event, we might have\n // stepped past dehydrated DOM nodes to get here. However they could\n // also have been non-React nodes. We need to answer which one.\n // If we the instance doesn't have any children, then there can't be\n // a nested suspense boundary within it. So we can use this as a fast\n // bailout. Most of the time, when people add non-React children to\n // the tree, it is using a ref to a child-less DOM node.\n // Normally we'd only need to check one of the fibers because if it\n // has ever gone from having children to deleting them or vice versa\n // it would have deleted the dehydrated boundary nested inside already.\n // However, since the HostRoot starts out with an alternate it might\n // have one on the alternate so we need to check in case this was a\n // root.\n const alternate = targetInst.alternate;\n\n if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n // Next we need to figure out if the node that skipped past is\n // nested within a dehydrated boundary and if so, which one.\n let suspenseInstance = getParentSuspenseInstance(targetNode);\n\n while (suspenseInstance !== null) {\n // We found a suspense instance. That means that we haven't\n // hydrated it yet. Even though we leave the comments in the\n // DOM after hydrating, and there are boundaries in the DOM\n // that could already be hydrated, we wouldn't have found them\n // through this pass since if the target is hydrated it would\n // have had an internalInstanceKey on it.\n // Let's get the fiber associated with the SuspenseComponent\n // as the deepest instance.\n // $FlowFixMe[prop-missing]\n const targetSuspenseInst = suspenseInstance[internalInstanceKey];\n\n if (targetSuspenseInst) {\n return targetSuspenseInst;\n } // If we don't find a Fiber on the comment, it might be because\n // we haven't gotten to hydrate it yet. There might still be a\n // parent boundary that hasn't above this one so we need to find\n // the outer most that is known.\n\n\n suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent\n // host component also hasn't hydrated yet. We can return it\n // below since it will bail out on the isMounted check later.\n }\n }\n\n return targetInst;\n }\n\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n\n return null;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\nfunction getInstanceFromNode(node) {\n const inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n\n if (inst) {\n const tag = inst.tag;\n\n if (tag === HostComponent || tag === HostText || tag === SuspenseComponent || (tag === HostHoistable ) || tag === HostSingleton || tag === HostRoot) {\n return inst;\n } else {\n return null;\n }\n }\n\n return null;\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\nfunction getNodeFromInstance(inst) {\n const tag = inst.tag;\n\n if (tag === HostComponent || (tag === HostHoistable ) || tag === HostSingleton || tag === HostText) {\n // In Fiber this, is just the state node right now. We assume it will be\n // a host component or host text.\n return inst.stateNode;\n } // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n\n\n throw Error(formatProdErrorMessage(33));\n}\nfunction getFiberCurrentPropsFromNode(node) {\n return node[internalPropsKey] || null;\n}\nfunction updateFiberProps(node, props) {\n node[internalPropsKey] = props;\n}\nfunction getEventListenerSet(node) {\n let elementListenerSet = node[internalEventHandlersKey];\n\n if (elementListenerSet === undefined) {\n elementListenerSet = node[internalEventHandlersKey] = new Set();\n }\n\n return elementListenerSet;\n}\nfunction getResourcesFromRoot(root) {\n let resources = root[internalRootNodeResourcesKey];\n\n if (!resources) {\n resources = root[internalRootNodeResourcesKey] = {\n hoistableStyles: new Map(),\n hoistableScripts: new Map()\n };\n }\n\n return resources;\n}\nfunction isMarkedHoistable(node) {\n return !!node[internalHoistableMarker];\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = true;\n}\nfunction isOwnedInstance(node) {\n return !!(node[internalHoistableMarker] || node[internalInstanceKey]);\n}\n\nconst allNativeEvents = new Set();\n/**\n * Mapping from registration name to event name\n */\n\n\nconst registrationNameDependencies = {};\n\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + 'Capture', dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n\n registrationNameDependencies[registrationName] = dependencies;\n\n for (let i = 0; i < dependencies.length; i++) {\n allNativeEvents.add(dependencies[i]);\n }\n}\n\nconst canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\n/* eslint-disable max-len */\n\nconst ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\nconst ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nconst illegalAttributeNameCache = {};\nconst validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n return true;\n }\n\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n return false;\n }\n\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n\n illegalAttributeNameCache[attributeName] = true;\n\n return false;\n}\n\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name)) {\n // If the prop isn't in the special list, treat it as a simple attribute.\n // shouldRemoveAttribute\n if (value === null) {\n node.removeAttribute(name);\n return;\n }\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n case 'symbol':\n // eslint-disable-line\n node.removeAttribute(name);\n return;\n\n case 'boolean':\n {\n const prefix = name.toLowerCase().slice(0, 5);\n\n if (prefix !== 'data-' && prefix !== 'aria-') {\n node.removeAttribute(name);\n return;\n }\n }\n }\n\n node.setAttribute(name, '' + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (value === null) {\n node.removeAttribute(name);\n return;\n }\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n case 'symbol':\n case 'boolean':\n {\n node.removeAttribute(name);\n return;\n }\n }\n\n node.setAttribute(name, '' + value);\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (value === null) {\n node.removeAttribute(name);\n return;\n }\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n case 'symbol':\n case 'boolean':\n {\n node.removeAttribute(name);\n return;\n }\n }\n\n node.setAttributeNS(namespace, name, '' + value);\n}\n\nlet prefix;\nfunction describeBuiltInComponentFrame(name, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n const match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nlet reentry = false;\nlet componentFrameCache;\n/**\n * Leverages native browser/VM stack frames to get proper details (e.g.\n * filename, line + col number) for a single component in a component stack. We\n * do this by:\n * (1) throwing and catching an error in the function - this will be our\n * control error.\n * (2) calling the component which will eventually throw an error that we'll\n * catch - this will be our sample error.\n * (3) diffing the control and sample error stacks to find the stack frame\n * which represents our component.\n */\n\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n reentry = true;\n const previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe[incompatible-type] It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n /**\n * Finding a common stack frame between sample and control errors can be\n * tricky given the different types and levels of stack trace truncation from\n * different JS VMs. So instead we'll attempt to control what that common\n * frame should be through this object method:\n * Having both the sample and control errors be in the function under the\n * `DescribeNativeComponentFrameRoot` property, + setting the `name` and\n * `displayName` properties of the function ensures that a stack\n * frame exists that has the method name `DescribeNativeComponentFrameRoot` in\n * it for both control and sample stacks.\n */\n\n\n const RunInRootFrame = {\n DetermineComponentFrameRoot() {\n let control;\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n const Fake = function () {\n throw Error();\n }; // $FlowFixMe[prop-missing]\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n } // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n } // TODO(luna): This will currently only throw if the function component\n // tries to access React/ReactDOM/props. We should probably make this throw\n // in simple components too\n\n\n const maybePromise = fn(); // If the function component returns a promise, it's likely an async\n // component, which we don't yet support. Attach a noop catch handler to\n // silence the error.\n // TODO: Implement component stacks for async client components?\n\n if (maybePromise && typeof maybePromise.catch === 'function') {\n maybePromise.catch(() => {});\n }\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n return [sample.stack, control.stack];\n }\n }\n\n return [null, null];\n }\n\n }; // $FlowFixMe[prop-missing]\n\n RunInRootFrame.DetermineComponentFrameRoot.displayName = 'DetermineComponentFrameRoot';\n const namePropDescriptor = Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot, 'name'); // Before ES6, the `name` property was not configurable.\n\n if (namePropDescriptor && namePropDescriptor.configurable) {\n // V8 utilizes a function's `name` property when generating a stack trace.\n Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot, // Configurable properties can be updated even if its writable descriptor\n // is set to `false`.\n // $FlowFixMe[cannot-write]\n 'name', {\n value: 'DetermineComponentFrameRoot'\n });\n }\n\n try {\n const _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n\n if (sampleStack && controlStack) {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n const sampleLines = sampleStack.split('\\n');\n const controlLines = controlStack.split('\\n');\n let s = 0;\n let c = 0;\n\n while (s < sampleLines.length && !sampleLines[s].includes('DetermineComponentFrameRoot')) {\n s++;\n }\n\n while (c < controlLines.length && !controlLines[c].includes('DetermineComponentFrameRoot')) {\n c++;\n } // We couldn't find our intentionally injected common root frame, attempt\n // to find another common root frame by search from the bottom of the\n // control stack...\n\n\n if (s === sampleLines.length || c === controlLines.length) {\n s = sampleLines.length - 1;\n c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n let frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n if (fn.displayName && frame.includes('<anonymous>')) {\n frame = frame.replace('<anonymous>', fn.displayName);\n }\n\n if (false) ; // Return the line we found.\n\n\n return frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n const name = fn ? fn.displayName || fn.name : '';\n const syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, ownerFn) {\n {\n return describeNativeComponentFrame(ctor, true);\n }\n}\nfunction describeFunctionComponentFrame(fn, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction describeFiber(fiber) {\n\n switch (fiber.tag) {\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n return describeBuiltInComponentFrame(fiber.type);\n\n case LazyComponent:\n return describeBuiltInComponentFrame('Lazy');\n\n case SuspenseComponent:\n return describeBuiltInComponentFrame('Suspense');\n\n case SuspenseListComponent:\n return describeBuiltInComponentFrame('SuspenseList');\n\n case FunctionComponent:\n case IndeterminateComponent:\n case SimpleMemoComponent:\n return describeFunctionComponentFrame(fiber.type);\n\n case ForwardRef:\n return describeFunctionComponentFrame(fiber.type.render);\n\n case ClassComponent:\n return describeClassComponentFrame(fiber.type);\n\n default:\n return '';\n }\n}\n\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n let info = '';\n let node = workInProgress;\n\n do {\n info += describeFiber(node); // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n node = node.return;\n } while (node);\n\n return info;\n } catch (x) {\n return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n }\n}\n\nfunction getWrappedName$1(outerType, innerType, wrapperName) {\n const displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n const functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName$1(type) {\n return type.displayName || 'Context';\n}\n\nconst REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference'); // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n if (typeof type === 'function') {\n if (type.$$typeof === REACT_CLIENT_REFERENCE) {\n // TODO: Create a convention for naming client references with debug info.\n return null;\n }\n\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n case REACT_CACHE_TYPE:\n {\n return 'Cache';\n }\n\n }\n\n if (typeof type === 'object') {\n\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n {\n const provider = type;\n return getContextName$1(provider._context) + '.Provider';\n }\n\n case REACT_CONTEXT_TYPE:\n const context = type;\n\n {\n return getContextName$1(context) + '.Consumer';\n }\n\n case REACT_CONSUMER_TYPE:\n {\n return null;\n }\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName$1(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n const outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n const lazyComponent = type;\n const payload = lazyComponent._payload;\n const init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n} // Keep in sync with shared/getComponentNameFromType\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nfunction getComponentNameFromFiber(fiber) {\n const tag = fiber.tag,\n type = fiber.type;\n\n switch (tag) {\n case CacheComponent:\n return 'Cache';\n\n case ContextConsumer:\n {\n const context = type;\n return getContextName(context) + '.Consumer';\n }\n\n case ContextProvider:\n {\n const provider = type;\n return getContextName(provider._context) + '.Provider';\n }\n\n case DehydratedFragment:\n return 'DehydratedFragment';\n\n case ForwardRef:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case Fragment:\n return 'Fragment';\n\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n // Host component type is the display name (e.g. \"div\", \"View\")\n return type;\n\n case HostPortal:\n return 'Portal';\n\n case HostRoot:\n return 'Root';\n\n case HostText:\n return 'Text';\n\n case LazyComponent:\n // Name comes from the type in this case; we don't have a tag.\n return getComponentNameFromType(type);\n\n case Mode:\n if (type === REACT_STRICT_MODE_TYPE) {\n // Don't be less specific than shared/getComponentNameFromType\n return 'StrictMode';\n }\n\n return 'Mode';\n\n case OffscreenComponent:\n return 'Offscreen';\n\n case Profiler:\n return 'Profiler';\n\n case ScopeComponent:\n return 'Scope';\n\n case SuspenseComponent:\n return 'Suspense';\n\n case SuspenseListComponent:\n return 'SuspenseList';\n\n case TracingMarkerComponent:\n return 'TracingMarker';\n // The display name for this tags come from the user-provided type:\n\n case ClassComponent:\n case FunctionComponent:\n case IncompleteClassComponent:\n case IndeterminateComponent:\n case MemoComponent:\n case SimpleMemoComponent:\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n break;\n\n }\n\n return null;\n}\n\n// around this limitation, we use an opaque type that can only be obtained by\n// passing the value through getToStringValue first.\n\nfunction toString(value) {\n // The coercion safety check is performed in getToStringValue().\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return value;\n\n case 'object':\n\n return value;\n\n default:\n // function, symbol are assigned as empty strings\n return '';\n }\n}\n\nfunction isCheckable(elem) {\n const type = elem.type;\n const nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n let value = '';\n\n if (!node) {\n return value;\n }\n\n if (isCheckable(node)) {\n value = node.checked ? 'true' : 'false';\n } else {\n value = node.value;\n }\n\n return value;\n}\n\nfunction trackValueOnNode(node) {\n const valueField = isCheckable(node) ? 'checked' : 'value';\n const descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n let currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n\n if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n const get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: true,\n // $FlowFixMe[missing-this-annot]\n get: function () {\n return get.call(this);\n },\n // $FlowFixMe[missing-local-annot]\n // $FlowFixMe[missing-this-annot]\n set: function (value) {\n\n currentValue = '' + value;\n set.call(this, value);\n }\n }); // We could've passed this the first time\n // but it triggers a bug in IE11 and Edge 14/15.\n // Calling defineProperty() again should be equivalent.\n // https://github.com/facebook/react/issues/11768\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n const tracker = {\n getValue() {\n return currentValue;\n },\n\n setValue(value) {\n\n currentValue = '' + value;\n },\n\n stopTracking() {\n detachTracker(node);\n delete node[valueField];\n }\n\n };\n return tracker;\n}\n\nfunction track(node) {\n if (getTracker(node)) {\n return;\n }\n\n node._valueTracker = trackValueOnNode(node);\n}\nfunction updateValueIfChanged(node) {\n if (!node) {\n return false;\n }\n\n const tracker = getTracker(node); // if there is no tracker at this point it's unlikely\n // that trying again will succeed\n\n if (!tracker) {\n return true;\n }\n\n const lastValue = tracker.getValue();\n const nextValue = getValueFromNode(node);\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n}\n\nfunction getActiveElement(doc) {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n// When passing user input into querySelector(All) the embedded string must not alter\n// the semantics of the query. This escape function is safe to use when we know the\n// provided value is going to be wrapped in double quotes as part of an attribute selector\n// Do not use it anywhere else\n// we escape double quotes and backslashes\nconst escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\\\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(escapeSelectorAttributeValueInsideDoubleQuotesRegex, ch => '\\\\' + ch.charCodeAt(0).toString(16) + ' ');\n}\n\nfunction updateInput(element, value, defaultValue, lastDefaultValue, checked, defaultChecked, type, name) {\n const node = element; // Temporarily disconnect the input from any radio buttons.\n // Changing the type or name as the same time as changing the checked value\n // needs to be atomically applied. We can only ensure that by disconnecting\n // the name while do the mutations and then reapply the name after that's done.\n\n node.name = '';\n\n if (type != null && typeof type !== 'function' && typeof type !== 'symbol' && typeof type !== 'boolean') {\n\n node.type = type;\n } else {\n node.removeAttribute('type');\n }\n\n if (value != null) {\n if (type === 'number') {\n if ( // $FlowFixMe[incompatible-type]\n value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.\n // eslint-disable-next-line\n node.value != value) {\n node.value = toString(getToStringValue(value));\n }\n } else if (node.value !== toString(getToStringValue(value))) {\n node.value = toString(getToStringValue(value));\n }\n } else if (type === 'submit' || type === 'reset') {\n // Submit/reset inputs need the attribute removed completely to avoid\n // blank-text buttons.\n node.removeAttribute('value');\n }\n\n {\n // When syncing the value attribute, the value comes from a cascade of\n // properties:\n // 1. The value React property\n // 2. The defaultValue React property\n // 3. Otherwise there should be no change\n if (value != null) {\n setDefaultValue(node, type, getToStringValue(value));\n } else if (defaultValue != null) {\n setDefaultValue(node, type, getToStringValue(defaultValue));\n } else if (lastDefaultValue != null) {\n node.removeAttribute('value');\n }\n }\n\n {\n // When syncing the checked attribute, it only changes when it needs\n // to be removed, such as transitioning from a checkbox into a text input\n if (checked == null && defaultChecked != null) {\n node.defaultChecked = !!defaultChecked;\n }\n }\n\n if (checked != null) {\n // Important to set this even if it's not a change in order to update input\n // value tracking with radio buttons\n // TODO: Should really update input value tracking for the whole radio\n // button group in an effect or something (similar to #27024)\n node.checked = checked && typeof checked !== 'function' && typeof checked !== 'symbol';\n }\n\n if (name != null && typeof name !== 'function' && typeof name !== 'symbol' && typeof name !== 'boolean') {\n\n node.name = toString(getToStringValue(name));\n } else {\n node.removeAttribute('name');\n }\n}\nfunction initInput(element, value, defaultValue, checked, defaultChecked, type, name, isHydrating) {\n const node = element;\n\n if (type != null && typeof type !== 'function' && typeof type !== 'symbol' && typeof type !== 'boolean') {\n\n node.type = type;\n }\n\n if (value != null || defaultValue != null) {\n const isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the\n // default value provided by the browser. See: #12872\n\n if (isButton && (value === undefined || value === null)) {\n return;\n }\n\n const defaultValueStr = defaultValue != null ? toString(getToStringValue(defaultValue)) : '';\n const initialValue = value != null ? toString(getToStringValue(value)) : defaultValueStr; // Do not assign value if it is already set. This prevents user text input\n // from being lost during SSR hydration.\n\n if (!isHydrating) {\n {\n // When syncing the value attribute, the value property should use\n // the wrapperState._initialValue property. This uses:\n //\n // 1. The value React property when present\n // 2. The defaultValue React property when present\n // 3. An empty string\n if (initialValue !== node.value) {\n node.value = initialValue;\n }\n }\n }\n\n {\n // Otherwise, the value attribute is synchronized to the property,\n // so we assign defaultValue to the same thing as the value property\n // assignment step above.\n node.defaultValue = initialValue;\n }\n } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n\n\n const checkedOrDefault = checked != null ? checked : defaultChecked; // TODO: This 'function' or 'symbol' check isn't replicated in other places\n // so this semantic is inconsistent.\n\n const initialChecked = typeof checkedOrDefault !== 'function' && typeof checkedOrDefault !== 'symbol' && !!checkedOrDefault;\n\n if (isHydrating) {\n // Detach .checked from .defaultChecked but leave user input alone\n node.checked = node.checked;\n } else {\n node.checked = !!initialChecked;\n }\n\n {\n // When syncing the checked attribute, both the checked property and\n // attribute are assigned at the same time using defaultChecked. This uses:\n //\n // 1. The checked React property when present\n // 2. The defaultChecked React property when present\n // 3. Otherwise, false\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !!initialChecked;\n } // Name needs to be set at the end so that it applies atomically to connected radio buttons.\n\n\n if (name != null && typeof name !== 'function' && typeof name !== 'symbol' && typeof name !== 'boolean') {\n\n node.name = name;\n }\n}\nfunction restoreControlledInputState(element, props) {\n const rootNode = element;\n updateInput(rootNode, props.value, props.defaultValue, props.defaultValue, props.checked, props.defaultChecked, props.type, props.name);\n const name = props.name;\n\n if (props.type === 'radio' && name != null) {\n let queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n } // If `rootNode.form` was non-null, then we could try `form.elements`,\n\n const group = queryRoot.querySelectorAll('input[name=\"' + escapeSelectorAttributeValueInsideDoubleQuotes('' + name) + '\"][type=\"radio\"]');\n\n for (let i = 0; i < group.length; i++) {\n const otherNode = group[i];\n\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n } // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n\n\n const otherProps = getFiberCurrentPropsFromNode(otherNode);\n\n if (!otherProps) {\n throw Error(formatProdErrorMessage(90));\n } // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n\n\n updateInput(otherNode, otherProps.value, otherProps.defaultValue, otherProps.defaultValue, otherProps.checked, otherProps.defaultChecked, otherProps.type, otherProps.name);\n } // If any updateInput() call set .checked to true, an input in this group\n // (often, `rootNode` itself) may have become unchecked\n\n\n for (let i = 0; i < group.length; i++) {\n const otherNode = group[i];\n\n if (otherNode.form !== rootNode.form) {\n continue;\n }\n\n updateValueIfChanged(otherNode);\n }\n }\n} // In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\n\nfunction setDefaultValue(node, type, value) {\n if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n type !== 'number' || getActiveElement(node.ownerDocument) !== node) {\n if (node.defaultValue !== toString(value)) {\n node.defaultValue = toString(value);\n }\n }\n}\n\nconst isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n const options = node.options;\n\n if (multiple) {\n const selectedValues = propValue;\n const selectedValue = {};\n\n for (let i = 0; i < selectedValues.length; i++) {\n // Prefix to avoid chaos with special keys.\n selectedValue['$' + selectedValues[i]] = true;\n }\n\n for (let i = 0; i < options.length; i++) {\n const selected = selectedValue.hasOwnProperty('$' + options[i].value);\n\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n\n if (selected && setDefaultSelected) {\n options[i].defaultSelected = true;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n const selectedValue = toString(getToStringValue(propValue));\n let defaultSelected = null;\n\n for (let i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n\n if (setDefaultSelected) {\n options[i].defaultSelected = true;\n }\n\n return;\n }\n\n if (defaultSelected === null && !options[i].disabled) {\n defaultSelected = options[i];\n }\n }\n\n if (defaultSelected !== null) {\n defaultSelected.selected = true;\n }\n }\n}\nfunction initSelect(element, value, defaultValue, multiple) {\n const node = element;\n node.multiple = !!multiple;\n\n if (value != null) {\n updateOptions(node, !!multiple, value, false);\n } else if (defaultValue != null) {\n updateOptions(node, !!multiple, defaultValue, true);\n }\n}\nfunction updateSelect(element, value, defaultValue, multiple, wasMultiple) {\n const node = element;\n\n if (value != null) {\n updateOptions(node, !!multiple, value, false);\n } else if (!!wasMultiple !== !!multiple) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (defaultValue != null) {\n updateOptions(node, !!multiple, defaultValue, true);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(node, !!multiple, multiple ? [] : '', false);\n }\n }\n}\nfunction restoreControlledSelectState(element, props) {\n const node = element;\n const value = props.value;\n\n if (value != null) {\n updateOptions(node, !!props.multiple, value, false);\n }\n}\n\nfunction updateTextarea(element, value, defaultValue) {\n const node = element;\n\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n const newValue = toString(getToStringValue(value)); // To avoid side effects (such as losing text selection), only set value if changed\n\n if (newValue !== node.value) {\n node.value = newValue;\n } // TOOO: This should respect disableInputAttributeSyncing flag.\n\n\n if (defaultValue == null) {\n if (node.defaultValue !== newValue) {\n node.defaultValue = newValue;\n }\n\n return;\n }\n }\n\n if (defaultValue != null) {\n node.defaultValue = toString(getToStringValue(defaultValue));\n } else {\n node.defaultValue = '';\n }\n}\nfunction initTextarea(element, value, defaultValue, children) {\n const node = element;\n let initialValue = value; // Only bother fetching default value if we're going to use it\n\n if (initialValue == null) {\n if (children != null) {\n {\n if (defaultValue != null) {\n throw Error(formatProdErrorMessage(92));\n }\n\n if (isArray(children)) {\n if (children.length > 1) {\n throw Error(formatProdErrorMessage(93));\n }\n\n children = children[0];\n }\n\n defaultValue = children;\n }\n }\n\n if (defaultValue == null) {\n defaultValue = '';\n }\n\n initialValue = defaultValue;\n }\n\n const stringValue = getToStringValue(initialValue);\n node.defaultValue = stringValue; // This will be toString:ed.\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n\n const textContent = node.textContent; // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n\n if (textContent === stringValue) {\n if (textContent !== '' && textContent !== null) {\n node.value = textContent;\n }\n }\n}\nfunction restoreControlledTextareaState(element, props) {\n // DOM component is still mounted; update\n updateTextarea(element, props.value, props.defaultValue);\n}\n\nconst MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\n/* globals MSApp */\n\nlet reusableSVGContainer;\n\nfunction setInnerHTMLImpl(node, html) {\n if (node.namespaceURI === SVG_NAMESPACE) {\n\n if (!('innerHTML' in node)) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';\n const svgNode = reusableSVGContainer.firstChild;\n\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n } // $FlowFixMe[incompatible-use]\n // $FlowFixMe[incompatible-type]\n\n\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n\n return;\n }\n }\n\n node.innerHTML = html;\n}\n\nlet setInnerHTML = setInnerHTMLImpl; // $FlowFixMe[cannot-resolve-name]\n\nif (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n /**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n setInnerHTML = function (node, html) {\n // $FlowFixMe[cannot-resolve-name]\n return MSApp.execUnsafeLocalFunction(function () {\n return setInnerHTMLImpl(node, html);\n });\n };\n}\n\nvar setInnerHTML$1 = setInnerHTML;\n\n/**\n * HTML nodeType values that represent the type of the node\n */\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst DOCUMENT_NODE = 9;\nconst DOCUMENT_TYPE_NODE = 10;\nconst DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\nfunction setTextContent(node, text) {\n if (text) {\n const firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n firstChild.nodeValue = text;\n return;\n }\n }\n\n node.textContent = text;\n}\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nconst unitlessNumbers = new Set(['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', 'scale', 'tabSize', 'widows', 'zIndex', 'zoom', 'fillOpacity', // SVG-related properties\n'floodOpacity', 'stopOpacity', 'strokeDasharray', 'strokeDashoffset', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'MozAnimationIterationCount', // Known Prefixed Properties\n'MozBoxFlex', // TODO: Remove these since they shouldn't be used in modern code\n'MozBoxFlexGroup', 'MozLineClamp', 'msAnimationIterationCount', 'msFlex', 'msZoom', 'msFlexGrow', 'msFlexNegative', 'msFlexOrder', 'msFlexPositive', 'msFlexShrink', 'msGridColumn', 'msGridColumnSpan', 'msGridRow', 'msGridRowSpan', 'WebkitAnimationIterationCount', 'WebkitBoxFlex', 'WebKitBoxFlexGroup', 'WebkitBoxOrdinalGroup', 'WebkitColumnCount', 'WebkitColumns', 'WebkitFlex', 'WebkitFlexGrow', 'WebkitFlexPositive', 'WebkitFlexShrink', 'WebkitLineClamp']);\nfunction isUnitlessNumber (name) {\n return unitlessNumbers.has(name);\n}\n\nfunction setValueForStyle(style, styleName, value) {\n const isCustomProperty = styleName.indexOf('--') === 0;\n\n if (value == null || typeof value === 'boolean' || value === '') {\n if (isCustomProperty) {\n style.setProperty(styleName, '');\n } else if (styleName === 'float') {\n style.cssFloat = '';\n } else {\n style[styleName] = '';\n }\n } else if (isCustomProperty) {\n style.setProperty(styleName, value);\n } else if (typeof value === 'number' && value !== 0 && !isUnitlessNumber(styleName)) {\n style[styleName] = value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n } else {\n if (styleName === 'float') {\n style.cssFloat = value;\n } else {\n\n style[styleName] = ('' + value).trim();\n }\n }\n}\n/**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\n\nfunction setValueForStyles(node, styles, prevStyles) {\n if (styles != null && typeof styles !== 'object') {\n throw Error(formatProdErrorMessage(62));\n }\n\n const style = node.style;\n\n if (prevStyles != null) {\n\n for (const styleName in prevStyles) {\n if (prevStyles.hasOwnProperty(styleName) && (styles == null || !styles.hasOwnProperty(styleName))) {\n // Clear style\n const isCustomProperty = styleName.indexOf('--') === 0;\n\n if (isCustomProperty) {\n style.setProperty(styleName, '');\n } else if (styleName === 'float') {\n style.cssFloat = '';\n } else {\n style[styleName] = '';\n }\n }\n }\n\n for (const styleName in styles) {\n const value = styles[styleName];\n\n if (styles.hasOwnProperty(styleName) && prevStyles[styleName] !== value) {\n setValueForStyle(style, styleName, value);\n }\n }\n } else {\n for (const styleName in styles) {\n if (styles.hasOwnProperty(styleName)) {\n const value = styles[styleName];\n setValueForStyle(style, styleName, value);\n }\n }\n }\n}\n\nfunction isCustomElement(tagName, props) {\n if (tagName.indexOf('-') === -1) {\n return false;\n }\n\n switch (tagName) {\n // These are reserved SVG and MathML elements.\n // We don't mind this list too much because we expect it to never grow.\n // The alternative is to track the namespace in a few places which is convoluted.\n // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n case 'annotation-xml':\n case 'color-profile':\n case 'font-face':\n case 'font-face-src':\n case 'font-face-uri':\n case 'font-face-format':\n case 'font-face-name':\n case 'missing-glyph':\n return false;\n\n default:\n return true;\n }\n}\n\nconst aliases = new Map([['acceptCharset', 'accept-charset'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv'], // HTML and SVG attributes, but the SVG attribute is case sensitive.],\n['crossOrigin', 'crossorigin'], // This is a list of all SVG attributes that need special casing.\n// Regular attributes that just accept strings.],\n['accentHeight', 'accent-height'], ['alignmentBaseline', 'alignment-baseline'], ['arabicForm', 'arabic-form'], ['baselineShift', 'baseline-shift'], ['capHeight', 'cap-height'], ['clipPath', 'clip-path'], ['clipRule', 'clip-rule'], ['colorInterpolation', 'color-interpolation'], ['colorInterpolationFilters', 'color-interpolation-filters'], ['colorProfile', 'color-profile'], ['colorRendering', 'color-rendering'], ['dominantBaseline', 'dominant-baseline'], ['enableBackground', 'enable-background'], ['fillOpacity', 'fill-opacity'], ['fillRule', 'fill-rule'], ['floodColor', 'flood-color'], ['floodOpacity', 'flood-opacity'], ['fontFamily', 'font-family'], ['fontSize', 'font-size'], ['fontSizeAdjust', 'font-size-adjust'], ['fontStretch', 'font-stretch'], ['fontStyle', 'font-style'], ['fontVariant', 'font-variant'], ['fontWeight', 'font-weight'], ['glyphName', 'glyph-name'], ['glyphOrientationHorizontal', 'glyph-orientation-horizontal'], ['glyphOrientationVertical', 'glyph-orientation-vertical'], ['horizAdvX', 'horiz-adv-x'], ['horizOriginX', 'horiz-origin-x'], ['imageRendering', 'image-rendering'], ['letterSpacing', 'letter-spacing'], ['lightingColor', 'lighting-color'], ['markerEnd', 'marker-end'], ['markerMid', 'marker-mid'], ['markerStart', 'marker-start'], ['overlinePosition', 'overline-position'], ['overlineThickness', 'overline-thickness'], ['paintOrder', 'paint-order'], ['panose-1', 'panose-1'], ['pointerEvents', 'pointer-events'], ['renderingIntent', 'rendering-intent'], ['shapeRendering', 'shape-rendering'], ['stopColor', 'stop-color'], ['stopOpacity', 'stop-opacity'], ['strikethroughPosition', 'strikethrough-position'], ['strikethroughThickness', 'strikethrough-thickness'], ['strokeDasharray', 'stroke-dasharray'], ['strokeDashoffset', 'stroke-dashoffset'], ['strokeLinecap', 'stroke-linecap'], ['strokeLinejoin', 'stroke-linejoin'], ['strokeMiterlimit', 'stroke-miterlimit'], ['strokeOpacity', 'stroke-opacity'], ['strokeWidth', 'stroke-width'], ['textAnchor', 'text-anchor'], ['textDecoration', 'text-decoration'], ['textRendering', 'text-rendering'], ['transformOrigin', 'transform-origin'], ['underlinePosition', 'underline-position'], ['underlineThickness', 'underline-thickness'], ['unicodeBidi', 'unicode-bidi'], ['unicodeRange', 'unicode-range'], ['unitsPerEm', 'units-per-em'], ['vAlphabetic', 'v-alphabetic'], ['vHanging', 'v-hanging'], ['vIdeographic', 'v-ideographic'], ['vMathematical', 'v-mathematical'], ['vectorEffect', 'vector-effect'], ['vertAdvY', 'vert-adv-y'], ['vertOriginX', 'vert-origin-x'], ['vertOriginY', 'vert-origin-y'], ['wordSpacing', 'word-spacing'], ['writingMode', 'writing-mode'], ['xmlnsXlink', 'xmlns:xlink'], ['xHeight', 'x-height']]);\nfunction getAttributeAlias (name) {\n return aliases.get(name) || name;\n}\n\nfunction sanitizeURL(url) {\n\n return url;\n}\n\nconst IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\nconst IS_NON_DELEGATED = 1 << 1;\nconst IS_CAPTURE_PHASE = 1 << 2;\n// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when\n// we call willDeferLaterForLegacyFBSupport, thus not bailing out\n// will result in endless cycles like an infinite loop.\n// We also don't want to defer during event replaying.\n\nconst SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n\n// This exists to avoid circular dependency between ReactDOMEventReplaying\n// and DOMPluginEventSystem.\nlet currentReplayingEvent = null;\nfunction setReplayingEvent(event) {\n\n currentReplayingEvent = event;\n}\nfunction resetReplayingEvent() {\n\n currentReplayingEvent = null;\n}\nfunction isReplayingEvent(event) {\n return event === currentReplayingEvent;\n}\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n // Fallback to nativeEvent.srcElement for IE9\n // https://github.com/facebook/react/issues/12506\n let target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963\n\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n\n\n return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\nlet restoreTarget = null;\nlet restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n // We perform this translation at the end of the event loop so that we\n // always receive the correct fiber here\n const internalInstance = getInstanceFromNode(target);\n\n if (!internalInstance) {\n // Unmounted\n return;\n }\n\n const stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.\n\n if (stateNode) {\n const props = getFiberCurrentPropsFromNode(stateNode);\n restoreControlledState(internalInstance.stateNode, internalInstance.type, props);\n }\n}\n\nfunction enqueueStateRestore(target) {\n if (restoreTarget) {\n if (restoreQueue) {\n restoreQueue.push(target);\n } else {\n restoreQueue = [target];\n }\n } else {\n restoreTarget = target;\n }\n}\nfunction needsStateRestore() {\n return restoreTarget !== null || restoreQueue !== null;\n}\nfunction restoreStateIfNeeded() {\n if (!restoreTarget) {\n return;\n }\n\n const target = restoreTarget;\n const queuedTargets = restoreQueue;\n restoreTarget = null;\n restoreQueue = null;\n restoreStateOfTarget(target);\n\n if (queuedTargets) {\n for (let i = 0; i < queuedTargets.length; i++) {\n restoreStateOfTarget(queuedTargets[i]);\n }\n }\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n return key._reactInternals;\n}\nfunction has(key) {\n return key._reactInternals !== undefined;\n}\nfunction set(key, value) {\n key._reactInternals = value;\n}\n\nfunction getNearestMountedFiber(fiber) {\n let node = fiber;\n let nearestMounted = fiber;\n\n if (!fiber.alternate) {\n // If there is no alternate, this might be a new tree that isn't inserted\n // yet. If it is, then it will have a pending insertion effect on it.\n let nextNode = node;\n\n do {\n node = nextNode;\n\n if ((node.flags & (Placement | Hydrating)) !== NoFlags$1) {\n // This is an insertion or in-progress hydration. The nearest possible\n // mounted fiber is the parent but we need to continue to figure out\n // if that one is still mounted.\n nearestMounted = node.return;\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n nextNode = node.return;\n } while (nextNode);\n } else {\n while (node.return) {\n node = node.return;\n }\n }\n\n if (node.tag === HostRoot) {\n // TODO: Check if this was a nested HostRoot when used with\n // renderContainerIntoSubtree.\n return nearestMounted;\n } // If we didn't hit the root, that means that we're in an disconnected tree\n // that has been unmounted.\n\n\n return null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (fiber.tag === SuspenseComponent) {\n let suspenseState = fiber.memoizedState;\n\n if (suspenseState === null) {\n const current = fiber.alternate;\n\n if (current !== null) {\n suspenseState = current.memoizedState;\n }\n }\n\n if (suspenseState !== null) {\n return suspenseState.dehydrated;\n }\n }\n\n return null;\n}\nfunction getContainerFromFiber(fiber) {\n return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n}\nfunction isFiberMounted(fiber) {\n return getNearestMountedFiber(fiber) === fiber;\n}\nfunction isMounted(component) {\n\n const fiber = get(component);\n\n if (!fiber) {\n return false;\n }\n\n return getNearestMountedFiber(fiber) === fiber;\n}\n\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber) {\n throw Error(formatProdErrorMessage(188));\n }\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n const alternate = fiber.alternate;\n\n if (!alternate) {\n // If there is no alternate, then we only need to check if it is mounted.\n const nearestMounted = getNearestMountedFiber(fiber);\n\n if (nearestMounted === null) {\n throw Error(formatProdErrorMessage(188));\n }\n\n if (nearestMounted !== fiber) {\n return null;\n }\n\n return fiber;\n } // If we have two possible branches, we'll walk backwards up to the root\n // to see what path the root points to. On the way we may hit one of the\n // special cases and we'll deal with them.\n\n\n let a = fiber;\n let b = alternate;\n\n while (true) {\n const parentA = a.return;\n\n if (parentA === null) {\n // We're at the root.\n break;\n }\n\n const parentB = parentA.alternate;\n\n if (parentB === null) {\n // There is no alternate. This is an unusual case. Currently, it only\n // happens when a Suspense component is hidden. An extra fragment fiber\n // is inserted in between the Suspense fiber and its children. Skip\n // over this extra fragment fiber and proceed to the next parent.\n const nextParent = parentA.return;\n\n if (nextParent !== null) {\n a = b = nextParent;\n continue;\n } // If there's no parent, we're at the root.\n\n\n break;\n } // If both copies of the parent fiber point to the same child, we can\n // assume that the child is current. This happens when we bailout on low\n // priority: the bailed out fiber's child reuses the current child.\n\n\n if (parentA.child === parentB.child) {\n let child = parentA.child;\n\n while (child) {\n if (child === a) {\n // We've determined that A is the current branch.\n assertIsMounted(parentA);\n return fiber;\n }\n\n if (child === b) {\n // We've determined that B is the current branch.\n assertIsMounted(parentA);\n return alternate;\n }\n\n child = child.sibling;\n } // We should never have an alternate for any mounting node. So the only\n // way this could possibly happen is if this was unmounted, if at all.\n\n\n throw Error(formatProdErrorMessage(188));\n }\n\n if (a.return !== b.return) {\n // The return pointer of A and the return pointer of B point to different\n // fibers. We assume that return pointers never criss-cross, so A must\n // belong to the child set of A.return, and B must belong to the child\n // set of B.return.\n a = parentA;\n b = parentB;\n } else {\n // The return pointers point to the same fiber. We'll have to use the\n // default, slow path: scan the child sets of each parent alternate to see\n // which child belongs to which set.\n //\n // Search parent A's child set\n let didFindChild = false;\n let child = parentA.child;\n\n while (child) {\n if (child === a) {\n didFindChild = true;\n a = parentA;\n b = parentB;\n break;\n }\n\n if (child === b) {\n didFindChild = true;\n b = parentA;\n a = parentB;\n break;\n }\n\n child = child.sibling;\n }\n\n if (!didFindChild) {\n // Search parent B's child set\n child = parentB.child;\n\n while (child) {\n if (child === a) {\n didFindChild = true;\n a = parentB;\n b = parentA;\n break;\n }\n\n if (child === b) {\n didFindChild = true;\n b = parentB;\n a = parentA;\n break;\n }\n\n child = child.sibling;\n }\n\n if (!didFindChild) {\n throw Error(formatProdErrorMessage(189));\n }\n }\n }\n\n if (a.alternate !== b) {\n throw Error(formatProdErrorMessage(190));\n }\n } // If the root is not a host container, we're in a disconnected tree. I.e.\n // unmounted.\n\n\n if (a.tag !== HostRoot) {\n throw Error(formatProdErrorMessage(188));\n }\n\n if (a.stateNode.current === a) {\n // We've determined that A is the current branch.\n return fiber;\n } // Otherwise B has to be current branch.\n\n\n return alternate;\n}\nfunction findCurrentHostFiber(parent) {\n const currentParent = findCurrentFiberUsingSlowPath(parent);\n return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberImpl(node) {\n // Next we'll drill down this component to find the first HostComponent/Text.\n const tag = node.tag;\n\n if (tag === HostComponent || (tag === HostHoistable ) || tag === HostSingleton || tag === HostText) {\n return node;\n }\n\n let child = node.child;\n\n while (child !== null) {\n const match = findCurrentHostFiberImpl(child);\n\n if (match !== null) {\n return match;\n }\n\n child = child.sibling;\n }\n\n return null;\n}\n\nconst emptyContextObject = {};\n\n\nconst contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.\n\nconst didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\n\nlet previousContext = emptyContextObject;\n\nfunction getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {\n {\n if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n // If the fiber is a context provider itself, when we read its context\n // we may have already pushed its own child context on the stack. A context\n // provider should not \"see\" its own child context. Therefore we read the\n // previous (parent) context instead for a context provider.\n return previousContext;\n }\n\n return contextStackCursor.current;\n }\n}\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n {\n const instance = workInProgress.stateNode;\n instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n }\n}\n\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n {\n const type = workInProgress.type;\n const contextTypes = type.contextTypes;\n\n if (!contextTypes) {\n return emptyContextObject;\n } // Avoid recreating masked context unless unmasked context has changed.\n // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n // This may trigger infinite loops if componentWillReceiveProps calls setState.\n\n\n const instance = workInProgress.stateNode;\n\n if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n return instance.__reactInternalMemoizedMaskedChildContext;\n }\n\n const context = {};\n\n for (const key in contextTypes) {\n context[key] = unmaskedContext[key];\n } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n // Context is created before the class component is instantiated so check for instance.\n\n\n if (instance) {\n cacheContext(workInProgress, unmaskedContext, context);\n }\n\n return context;\n }\n}\n\nfunction hasContextChanged() {\n {\n return didPerformWorkStackCursor.current;\n }\n}\n\nfunction isContextProvider(type) {\n {\n const childContextTypes = type.childContextTypes;\n return childContextTypes !== null && childContextTypes !== undefined;\n }\n}\n\nfunction popContext(fiber) {\n {\n pop(didPerformWorkStackCursor);\n pop(contextStackCursor);\n }\n}\n\nfunction popTopLevelContextObject(fiber) {\n {\n pop(didPerformWorkStackCursor);\n pop(contextStackCursor);\n }\n}\n\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n {\n if (contextStackCursor.current !== emptyContextObject) {\n throw Error(formatProdErrorMessage(168));\n }\n\n push(contextStackCursor, context);\n push(didPerformWorkStackCursor, didChange);\n }\n}\n\nfunction processChildContext(fiber, type, parentContext) {\n {\n const instance = fiber.stateNode;\n const childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n\n if (typeof instance.getChildContext !== 'function') {\n\n return parentContext;\n }\n\n const childContext = instance.getChildContext();\n\n for (const contextKey in childContext) {\n if (!(contextKey in childContextTypes)) {\n throw Error(formatProdErrorMessage(108, getComponentNameFromFiber(fiber) || 'Unknown', contextKey));\n }\n }\n\n return assign({}, parentContext, childContext);\n }\n}\n\nfunction pushContextProvider(workInProgress) {\n {\n const instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.\n // If the instance does not exist yet, we will push null at first,\n // and replace it on the stack later when invalidating the context.\n\n const memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.\n // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n\n previousContext = contextStackCursor.current;\n push(contextStackCursor, memoizedMergedChildContext);\n push(didPerformWorkStackCursor, didPerformWorkStackCursor.current);\n return true;\n }\n}\n\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n {\n const instance = workInProgress.stateNode;\n\n if (!instance) {\n throw Error(formatProdErrorMessage(169));\n }\n\n if (didChange) {\n // Merge parent and own context.\n // Skip this if we're not updating due to sCU.\n // This avoids unnecessarily recomputing memoized values.\n const mergedContext = processChildContext(workInProgress, type, previousContext);\n instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.\n // It is important to unwind the context in the reverse order.\n\n pop(didPerformWorkStackCursor);\n pop(contextStackCursor); // Now push the new context and mark that it has changed.\n\n push(contextStackCursor, mergedContext);\n push(didPerformWorkStackCursor, didChange);\n } else {\n pop(didPerformWorkStackCursor);\n push(didPerformWorkStackCursor, didChange);\n }\n }\n}\n\nfunction findCurrentUnmaskedContext(fiber) {\n {\n // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n // makes sense elsewhere\n if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n throw Error(formatProdErrorMessage(170));\n }\n\n let node = fiber;\n\n do {\n switch (node.tag) {\n case HostRoot:\n return node.stateNode.context;\n\n case ClassComponent:\n {\n const Component = node.type;\n\n if (isContextProvider(Component)) {\n return node.stateNode.__reactInternalMemoizedMergedChildContext;\n }\n\n break;\n }\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n node = node.return;\n } while (node !== null);\n\n throw Error(formatProdErrorMessage(171));\n }\n}\n\nconst LegacyRoot = 0;\nconst ConcurrentRoot = 1;\n\n// We use the existence of the state object as an indicator that the component\n// is hidden.\nconst OffscreenVisible =\n/* */\n0b001;\nconst OffscreenDetached =\n/* */\n0b010;\nconst OffscreenPassiveEffectsConnected =\n/* */\n0b100;\nfunction isOffscreenManual(offscreenFiber) {\n return offscreenFiber.memoizedProps !== null && offscreenFiber.memoizedProps.mode === 'manual';\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nconst objectIs = // $FlowFixMe[method-unbinding]\ntypeof Object.is === 'function' ? Object.is : is;\n\n// This is imported by the event replaying implementation in React DOM. It's\n// in a separate file to break a circular dependency between the renderer and\n// the reconciler.\nfunction isRootDehydrated(root) {\n const currentState = root.current.memoizedState;\n return currentState.isDehydrated;\n}\n\n// Ids are base 32 strings whose binary representation corresponds to the\n// Intentionally not using it yet to derisk the initial implementation, because\n// the way we push/pop these values is a bit unusual. If there's a mistake, I'd\n// rather the ids be wrong than crash the whole reconciler.\n\nconst forkStack = [];\nlet forkStackIndex = 0;\nlet treeForkProvider = null;\nlet treeForkCount = 0;\nconst idStack = [];\nlet idStackIndex = 0;\nlet treeContextProvider = null;\nlet treeContextId = 1;\nlet treeContextOverflow = '';\nfunction isForkedChild(workInProgress) {\n return (workInProgress.flags & Forked) !== NoFlags$1;\n}\nfunction getForksAtLevel(workInProgress) {\n return treeForkCount;\n}\nfunction getTreeId() {\n const overflow = treeContextOverflow;\n const idWithLeadingBit = treeContextId;\n const id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n return id.toString(32) + overflow;\n}\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n const baseIdWithLeadingBit = treeContextId;\n const baseOverflow = treeContextOverflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n // of the id; we use it to account for leading 0s.\n\n const baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n const baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n const slot = index + 1;\n const length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n // consideration the leading 1 we use to mark the end of the sequence.\n\n if (length > 30) {\n // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n // This branch assumes the length of the base id is greater than 5; it won't\n // work for smaller ids, because you need 5 bits per character.\n //\n // We encode the id in multiple steps: first the base id, then the\n // remaining digits.\n //\n // Each 5 bit sequence corresponds to a single base 32 character. So for\n // example, if the current id is 23 bits long, we can convert 20 of those\n // bits into a string of 4 characters, with 3 bits left over.\n //\n // First calculate how many bits in the base id represent a complete\n // sequence of characters.\n const numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n const newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n const newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n const restOfBaseId = baseId >> numberOfOverflowBits;\n const restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n // we made more room, this time it won't overflow.\n\n const restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n const restOfNewBits = slot << restOfBaseLength;\n const id = restOfNewBits | restOfBaseId;\n const overflow = newOverflow + baseOverflow;\n treeContextId = 1 << restOfLength | id;\n treeContextOverflow = overflow;\n } else {\n // Normal path\n const newBits = slot << baseLength;\n const id = newBits | baseId;\n const overflow = baseOverflow;\n treeContextId = 1 << length | id;\n treeContextOverflow = overflow;\n }\n}\nfunction pushMaterializedTreeId(workInProgress) {\n // in its children.\n\n const returnFiber = workInProgress.return;\n\n if (returnFiber !== null) {\n const numberOfForks = 1;\n const slotIndex = 0;\n pushTreeFork(workInProgress, numberOfForks);\n pushTreeId(workInProgress, numberOfForks, slotIndex);\n }\n}\n\nfunction getBitLength(number) {\n return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n return 1 << getBitLength(id) - 1;\n}\n\nfunction popTreeContext(workInProgress) {\n // Restore the previous values.\n // This is a bit more complicated than other context-like modules in Fiber\n // because the same Fiber may appear on the stack multiple times and for\n // different reasons. We have to keep popping until the work-in-progress is\n // no longer at the top of the stack.\n while (workInProgress === treeForkProvider) {\n treeForkProvider = forkStack[--forkStackIndex];\n forkStack[forkStackIndex] = null;\n treeForkCount = forkStack[--forkStackIndex];\n forkStack[forkStackIndex] = null;\n }\n\n while (workInProgress === treeContextProvider) {\n treeContextProvider = idStack[--idStackIndex];\n idStack[idStackIndex] = null;\n treeContextOverflow = idStack[--idStackIndex];\n idStack[idStackIndex] = null;\n treeContextId = idStack[--idStackIndex];\n idStack[idStackIndex] = null;\n }\n}\nfunction getSuspendedTreeContext() {\n\n if (treeContextProvider !== null) {\n return {\n id: treeContextId,\n overflow: treeContextOverflow\n };\n } else {\n return null;\n }\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\n\n// This may have been an insertion or a hydration.\n\nlet hydrationParentFiber = null;\nlet nextHydratableInstance = null;\nlet isHydrating = false; // This flag allows for warning supression when we expect there to be mismatches\n\nlet hydrationErrors = null;\nlet rootOrSingletonContext = false;\n\nfunction enterHydrationState(fiber) {\n\n const parentInstance = fiber.stateNode.containerInfo;\n nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n hydrationParentFiber = fiber;\n isHydrating = true;\n hydrationErrors = null;\n rootOrSingletonContext = true;\n return true;\n}\n\nfunction reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n\n nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n hydrationParentFiber = fiber;\n isHydrating = true;\n hydrationErrors = null;\n rootOrSingletonContext = false;\n\n if (treeContext !== null) {\n restoreSuspendedTreeContext(fiber, treeContext);\n }\n\n return true;\n}\n\nfunction deleteHydratableInstance(returnFiber, instance) {\n const childToDelete = createFiberFromHostInstanceForDeletion();\n childToDelete.stateNode = instance;\n childToDelete.return = returnFiber;\n const deletions = returnFiber.deletions;\n\n if (deletions === null) {\n returnFiber.deletions = [childToDelete];\n returnFiber.flags |= ChildDeletion;\n } else {\n deletions.push(childToDelete);\n }\n}\n\nfunction insertNonHydratedInstance(returnFiber, fiber) {\n fiber.flags = fiber.flags & ~Hydrating | Placement;\n}\n\nfunction tryHydrateInstance(fiber, nextInstance) {\n // fiber is a HostComponent Fiber\n const instance = canHydrateInstance(nextInstance, fiber.type, fiber.pendingProps, rootOrSingletonContext);\n\n if (instance !== null) {\n fiber.stateNode = instance;\n hydrationParentFiber = fiber;\n nextHydratableInstance = getFirstHydratableChild(instance);\n rootOrSingletonContext = false;\n return true;\n }\n\n return false;\n}\n\nfunction tryHydrateText(fiber, nextInstance) {\n // fiber is a HostText Fiber\n const text = fiber.pendingProps;\n const textInstance = canHydrateTextInstance(nextInstance, text, rootOrSingletonContext);\n\n if (textInstance !== null) {\n fiber.stateNode = textInstance;\n hydrationParentFiber = fiber; // Text Instances don't have children so there's nothing to hydrate.\n\n nextHydratableInstance = null;\n return true;\n }\n\n return false;\n}\n\nfunction tryHydrateSuspense(fiber, nextInstance) {\n // fiber is a SuspenseComponent Fiber\n const suspenseInstance = canHydrateSuspenseInstance(nextInstance, rootOrSingletonContext);\n\n if (suspenseInstance !== null) {\n const suspenseState = {\n dehydrated: suspenseInstance,\n treeContext: getSuspendedTreeContext(),\n retryLane: OffscreenLane\n };\n fiber.memoizedState = suspenseState; // Store the dehydrated fragment as a child fiber.\n // This simplifies the code for getHostSibling and deleting nodes,\n // since it doesn't have to consider all Suspense boundaries and\n // check if they're dehydrated ones or not.\n\n const dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n dehydratedFragment.return = fiber;\n fiber.child = dehydratedFragment;\n hydrationParentFiber = fiber; // While a Suspense Instance does have children, we won't step into\n // it during the first pass. Instead, we'll reenter it later.\n\n nextHydratableInstance = null;\n return true;\n }\n\n return false;\n}\n\nfunction shouldClientRenderOnMismatch(fiber) {\n return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags$1;\n}\n\nfunction throwOnHydrationMismatch(fiber) {\n throw Error(formatProdErrorMessage(418));\n}\n\nfunction claimHydratableSingleton(fiber) {\n {\n if (!isHydrating) {\n return;\n }\n\n const currentRootContainer = getRootHostContainer();\n const instance = fiber.stateNode = resolveSingletonInstance(fiber.type, fiber.pendingProps, currentRootContainer);\n hydrationParentFiber = fiber;\n rootOrSingletonContext = true;\n nextHydratableInstance = getFirstHydratableChild(instance);\n }\n}\n\nfunction tryToClaimNextHydratableInstance(fiber) {\n if (!isHydrating) {\n return;\n }\n\n const initialInstance = nextHydratableInstance;\n const nextInstance = nextHydratableInstance;\n\n if (!nextInstance) {\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // Nothing to hydrate. Make it an insertion.\n\n\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n }\n\n const firstAttemptedInstance = nextInstance;\n\n if (!tryHydrateInstance(fiber, nextInstance)) {\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // If we can't hydrate this instance let's try the next one.\n // We use this as a heuristic. It's based on intuition and not data so it\n // might be flawed or unnecessary.\n\n\n nextHydratableInstance = getNextHydratableSibling(nextInstance);\n const prevHydrationParentFiber = hydrationParentFiber;\n\n if (!nextHydratableInstance || !tryHydrateInstance(fiber, nextHydratableInstance)) {\n // Nothing to hydrate. Make it an insertion.\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n } // We matched the next one, we'll now assume that the first one was\n // superfluous and we'll delete it. Since we can't eagerly delete it\n // we'll have to schedule a deletion. To do that, this node needs a dummy\n // fiber associated with it.\n\n\n deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n }\n}\n\nfunction tryToClaimNextHydratableTextInstance(fiber) {\n if (!isHydrating) {\n return;\n }\n\n const text = fiber.pendingProps;\n const isHydratable = isHydratableText(text);\n const initialInstance = nextHydratableInstance;\n const nextInstance = nextHydratableInstance;\n\n if (!nextInstance || !isHydratable) {\n // We exclude non hydrabable text because we know there are no matching hydratables.\n // We either throw or insert depending on the render mode.\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // Nothing to hydrate. Make it an insertion.\n\n\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n }\n\n const firstAttemptedInstance = nextInstance;\n\n if (!tryHydrateText(fiber, nextInstance)) {\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // If we can't hydrate this instance let's try the next one.\n // We use this as a heuristic. It's based on intuition and not data so it\n // might be flawed or unnecessary.\n\n\n nextHydratableInstance = getNextHydratableSibling(nextInstance);\n const prevHydrationParentFiber = hydrationParentFiber;\n\n if (!nextHydratableInstance || !tryHydrateText(fiber, nextHydratableInstance)) {\n // Nothing to hydrate. Make it an insertion.\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n } // We matched the next one, we'll now assume that the first one was\n // superfluous and we'll delete it. Since we can't eagerly delete it\n // we'll have to schedule a deletion. To do that, this node needs a dummy\n // fiber associated with it.\n\n\n deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n }\n}\n\nfunction tryToClaimNextHydratableSuspenseInstance(fiber) {\n if (!isHydrating) {\n return;\n }\n\n const initialInstance = nextHydratableInstance;\n const nextInstance = nextHydratableInstance;\n\n if (!nextInstance) {\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // Nothing to hydrate. Make it an insertion.\n\n\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n }\n\n const firstAttemptedInstance = nextInstance;\n\n if (!tryHydrateSuspense(fiber, nextInstance)) {\n if (shouldClientRenderOnMismatch(fiber)) {\n throwOnHydrationMismatch();\n } // If we can't hydrate this instance let's try the next one.\n // We use this as a heuristic. It's based on intuition and not data so it\n // might be flawed or unnecessary.\n\n\n nextHydratableInstance = getNextHydratableSibling(nextInstance);\n const prevHydrationParentFiber = hydrationParentFiber;\n\n if (!nextHydratableInstance || !tryHydrateSuspense(fiber, nextHydratableInstance)) {\n // Nothing to hydrate. Make it an insertion.\n insertNonHydratedInstance(hydrationParentFiber, fiber);\n isHydrating = false;\n hydrationParentFiber = fiber;\n nextHydratableInstance = initialInstance;\n return;\n } // We matched the next one, we'll now assume that the first one was\n // superfluous and we'll delete it. Since we can't eagerly delete it\n // we'll have to schedule a deletion. To do that, this node needs a dummy\n // fiber associated with it.\n\n\n deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n }\n}\n\nfunction tryToClaimNextHydratableFormMarkerInstance(fiber) {\n if (!isHydrating) {\n return false;\n }\n\n if (nextHydratableInstance) {\n const markerInstance = canHydrateFormStateMarker(nextHydratableInstance, rootOrSingletonContext);\n\n if (markerInstance) {\n // Found the marker instance.\n nextHydratableInstance = getNextHydratableSibling(markerInstance); // Return true if this marker instance should use the state passed\n // to hydrateRoot.\n // TODO: As an optimization, Fizz should only emit these markers if form\n // state is passed at the root.\n\n return isFormStateMarkerMatching(markerInstance);\n }\n } // Should have found a marker instance. Throw an error to trigger client\n // rendering. We don't bother to check if we're in a concurrent root because\n // useFormState is a new API, so backwards compat is not an issue.\n\n\n throwOnHydrationMismatch();\n return false;\n}\n\nfunction prepareToHydrateHostInstance(fiber, hostContext) {\n\n const instance = fiber.stateNode;\n hydrateInstance(instance, fiber.type, fiber.memoizedProps, hostContext, fiber);\n}\n\nfunction prepareToHydrateHostTextInstance(fiber) {\n\n const textInstance = fiber.stateNode;\n const textContent = fiber.memoizedProps;\n const shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n\n if (shouldUpdate) {\n // We assume that prepareToHydrateHostTextInstance is called in a context where the\n // hydration parent is the parent host component of this host text.\n const returnFiber = hydrationParentFiber;\n\n if (returnFiber !== null) {\n switch (returnFiber.tag) {\n case HostRoot:\n {\n const parentContainer = returnFiber.stateNode.containerInfo;\n const isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n isConcurrentMode);\n\n if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n // In concurrent mode we never update the mismatched text,\n // even if the error was ignored.\n return false;\n }\n\n break;\n }\n\n case HostSingleton:\n case HostComponent:\n {\n const parentType = returnFiber.type;\n const parentProps = returnFiber.memoizedProps;\n const parentInstance = returnFiber.stateNode;\n const isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n isConcurrentMode);\n\n if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n // In concurrent mode we never update the mismatched text,\n // even if the error was ignored.\n return false;\n }\n\n break;\n }\n }\n }\n }\n\n return shouldUpdate;\n}\n\nfunction prepareToHydrateHostSuspenseInstance(fiber) {\n\n const suspenseState = fiber.memoizedState;\n const suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n if (!suspenseInstance) {\n throw Error(formatProdErrorMessage(317));\n }\n\n hydrateSuspenseInstance(suspenseInstance, fiber);\n}\n\nfunction skipPastDehydratedSuspenseInstance(fiber) {\n\n const suspenseState = fiber.memoizedState;\n const suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n if (!suspenseInstance) {\n throw Error(formatProdErrorMessage(317));\n }\n\n return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n}\n\nfunction popToNextHostParent(fiber) {\n hydrationParentFiber = fiber.return;\n\n while (hydrationParentFiber) {\n switch (hydrationParentFiber.tag) {\n case HostRoot:\n case HostSingleton:\n rootOrSingletonContext = true;\n return;\n\n case HostComponent:\n case SuspenseComponent:\n rootOrSingletonContext = false;\n return;\n\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n }\n}\n\nfunction popHydrationState(fiber) {\n\n if (fiber !== hydrationParentFiber) {\n // We're deeper than the current hydration context, inside an inserted\n // tree.\n return false;\n }\n\n if (!isHydrating) {\n // If we're not currently hydrating but we're in a hydration context, then\n // we were an insertion and now need to pop up reenter hydration of our\n // siblings.\n popToNextHostParent(fiber);\n isHydrating = true;\n return false;\n }\n\n let shouldClear = false;\n\n {\n // With float we never clear the Root, or Singleton instances. We also do not clear Instances\n // that have singleton text content\n if (fiber.tag !== HostRoot && fiber.tag !== HostSingleton && !(fiber.tag === HostComponent && (!shouldDeleteUnhydratedTailInstances(fiber.type) || shouldSetTextContent(fiber.type, fiber.memoizedProps)))) {\n shouldClear = true;\n }\n }\n\n if (shouldClear) {\n let nextInstance = nextHydratableInstance;\n\n if (nextInstance) {\n if (shouldClientRenderOnMismatch(fiber)) {\n warnIfUnhydratedTailNodes();\n throwOnHydrationMismatch();\n } else {\n while (nextInstance) {\n deleteHydratableInstance(fiber, nextInstance);\n nextInstance = getNextHydratableSibling(nextInstance);\n }\n }\n }\n }\n\n popToNextHostParent(fiber);\n\n if (fiber.tag === SuspenseComponent) {\n nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n } else {\n nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n }\n\n return true;\n}\n\nfunction hasUnhydratedTailNodes() {\n return isHydrating && nextHydratableInstance !== null;\n}\n\nfunction warnIfUnhydratedTailNodes(fiber) {\n let nextInstance = nextHydratableInstance;\n\n while (nextInstance) {\n nextInstance = getNextHydratableSibling(nextInstance);\n }\n}\n\nfunction resetHydrationState() {\n\n hydrationParentFiber = null;\n nextHydratableInstance = null;\n isHydrating = false;\n}\n\nfunction upgradeHydrationErrorsToRecoverable() {\n if (hydrationErrors !== null) {\n // Successfully completed a forced client render. The errors that occurred\n // during the hydration attempt are now recovered. We will log them in\n // commit phase, once the entire tree has finished.\n queueRecoverableErrors(hydrationErrors);\n hydrationErrors = null;\n }\n}\n\nfunction getIsHydrating() {\n return isHydrating;\n}\n\nfunction queueHydrationError(error) {\n if (hydrationErrors === null) {\n hydrationErrors = [error];\n } else {\n hydrationErrors.push(error);\n }\n}\n\n// we wait until the current render is over (either finished or interrupted)\n// before adding it to the fiber/hook queue. Push to this array so we can\n// access the queue, fiber, update, et al later.\n\nconst concurrentQueues = [];\nlet concurrentQueuesIndex = 0;\nlet concurrentlyUpdatedLanes = NoLanes;\nfunction finishQueueingConcurrentUpdates() {\n const endIndex = concurrentQueuesIndex;\n concurrentQueuesIndex = 0;\n concurrentlyUpdatedLanes = NoLanes;\n let i = 0;\n\n while (i < endIndex) {\n const fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n const queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n const update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n const lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n\n if (queue !== null && update !== null) {\n const pending = queue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n queue.pending = update;\n }\n\n if (lane !== NoLane) {\n markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n }\n}\nfunction getConcurrentlyUpdatedLanes() {\n return concurrentlyUpdatedLanes;\n}\n\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n // Don't update the `childLanes` on the return path yet. If we already in\n // the middle of rendering, wait until after it has completed.\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes = mergeLanes(concurrentlyUpdatedLanes, lane); // The fiber's `lane` field is used in some places to check if any work is\n // scheduled, to perform an eager bailout, so we need to update it immediately.\n // TODO: We should probably move this to the \"shared\" queue instead.\n\n fiber.lanes = mergeLanes(fiber.lanes, lane);\n const alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, lane);\n }\n}\n\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n const concurrentQueue = queue;\n const concurrentUpdate = update;\n enqueueUpdate$1(fiber, concurrentQueue, concurrentUpdate, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update) {\n // This function is used to queue an update that doesn't need a rerender. The\n // only reason we queue it is in case there's a subsequent higher priority\n // update that causes it to be rebased.\n const lane = NoLane;\n const concurrentQueue = queue;\n const concurrentUpdate = update;\n enqueueUpdate$1(fiber, concurrentQueue, concurrentUpdate, lane); // Usually we can rely on the upcoming render phase to process the concurrent\n // queue. However, since this is a bail out, we're not scheduling any work\n // here. So the update we just queued will leak until something else happens\n // to schedule work (if ever).\n //\n // Check if we're currently in the middle of rendering a tree, and if not,\n // process the queue immediately to prevent a leak.\n\n const isConcurrentlyRendering = getWorkInProgressRoot() !== null;\n\n if (!isConcurrentlyRendering) {\n finishQueueingConcurrentUpdates();\n }\n}\nfunction enqueueConcurrentClassUpdate(fiber, queue, update, lane) {\n const concurrentQueue = queue;\n const concurrentUpdate = update;\n enqueueUpdate$1(fiber, concurrentQueue, concurrentUpdate, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n} // Calling this function outside this module should only be done for backwards\n// compatibility and should always be accompanied by a warning.\n\nfunction unsafe_markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n // NOTE: For Hyrum's Law reasons, if an infinite update loop is detected, it\n // should throw before `markUpdateLaneFromFiberToRoot` is called. But this is\n // undefined behavior and we can change it if we need to; it just so happens\n // that, at the time of this writing, there's an internal product test that\n // happens to rely on this.\n const root = getRootForUpdatedFiber(sourceFiber);\n markUpdateLaneFromFiberToRoot(sourceFiber, null, lane);\n return root;\n}\n\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n // Update the source fiber's lanes\n sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n let alternate = sourceFiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, lane);\n } // Walk the parent path to the root and update the child lanes.\n\n\n let isHidden = false;\n let parent = sourceFiber.return;\n let node = sourceFiber;\n\n while (parent !== null) {\n parent.childLanes = mergeLanes(parent.childLanes, lane);\n alternate = parent.alternate;\n\n if (alternate !== null) {\n alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n }\n\n if (parent.tag === OffscreenComponent) {\n // Check if this offscreen boundary is currently hidden.\n //\n // The instance may be null if the Offscreen parent was unmounted. Usually\n // the parent wouldn't be reachable in that case because we disconnect\n // fibers from the tree when they are deleted. However, there's a weird\n // edge case where setState is called on a fiber that was interrupted\n // before it ever mounted. Because it never mounts, it also never gets\n // deleted. Because it never gets deleted, its return pointer never gets\n // disconnected. Which means it may be attached to a deleted Offscreen\n // parent node. (This discovery suggests it may be better for memory usage\n // if we don't attach the `return` pointer until the commit phase, though\n // in order to do that we'd need some other way to track the return\n // pointer during the initial render, like on the stack.)\n //\n // This case is always accompanied by a warning, but we still need to\n // account for it. (There may be other cases that we haven't discovered,\n // too.)\n const offscreenInstance = parent.stateNode;\n\n if (offscreenInstance !== null && !(offscreenInstance._visibility & OffscreenVisible)) {\n isHidden = true;\n }\n }\n\n node = parent;\n parent = parent.return;\n }\n\n if (isHidden && update !== null && node.tag === HostRoot) {\n const root = node.stateNode;\n markHiddenUpdate(root, update, lane);\n }\n}\n\nfunction getRootForUpdatedFiber(sourceFiber) {\n // TODO: We will detect and infinite update loop and throw even if this fiber\n // has already unmounted. This isn't really necessary but it happens to be the\n // current behavior we've used for several release cycles. Consider not\n // performing this check if the updated fiber already unmounted, since it's\n // not possible for that to cause an infinite update loop.\n throwIfInfiniteUpdateLoopDetected(); // When a setState happens, we must ensure the root is scheduled. Because\n let node = sourceFiber;\n let parent = node.return;\n\n while (parent !== null) {\n node = parent;\n parent = node.return;\n }\n\n return node.tag === HostRoot ? node.stateNode : null;\n}\n\n// there's only a single root, but we do support multi root apps, hence this\n// extra complexity. But this module is optimized for the single root case.\n\nlet firstScheduledRoot = null;\nlet lastScheduledRoot = null; // Used to prevent redundant mircotasks from being scheduled.\n\nlet didScheduleMicrotask = false; // `act` \"microtasks\" are scheduled on the `act` queue instead of an actual\n\nlet mightHavePendingSyncWork = false;\nlet isFlushingWork = false;\nlet currentEventTransitionLane = NoLane;\nfunction ensureRootIsScheduled(root) {\n // This function is called whenever a root receives an update. It does two\n // things 1) it ensures the root is in the root schedule, and 2) it ensures\n // there's a pending microtask to process the root schedule.\n //\n // Most of the actual scheduling logic does not happen until\n // `scheduleTaskForRootDuringMicrotask` runs.\n // Add the root to the schedule\n if (root === lastScheduledRoot || root.next !== null) ; else {\n if (lastScheduledRoot === null) {\n firstScheduledRoot = lastScheduledRoot = root;\n } else {\n lastScheduledRoot.next = root;\n lastScheduledRoot = root;\n }\n } // Any time a root received an update, we set this to true until the next time\n // we process the schedule. If it's false, then we can quickly exit flushSync\n // without consulting the schedule.\n\n\n mightHavePendingSyncWork = true; // At the end of the current event, go through each of the roots and ensure\n // there's a task scheduled for each one at the correct priority.\n\n {\n if (!didScheduleMicrotask) {\n didScheduleMicrotask = true;\n scheduleImmediateTask(processRootScheduleInMicrotask);\n }\n }\n}\nfunction flushSyncWorkOnAllRoots() {\n // This is allowed to be called synchronously, but the caller should check\n // the execution context first.\n flushSyncWorkAcrossRoots_impl(false);\n}\nfunction flushSyncWorkOnLegacyRootsOnly() {\n // This is allowed to be called synchronously, but the caller should check\n // the execution context first.\n flushSyncWorkAcrossRoots_impl(true);\n}\n\nfunction flushSyncWorkAcrossRoots_impl(onlyLegacy) {\n if (isFlushingWork) {\n // Prevent reentrancy.\n // TODO: Is this overly defensive? The callers must check the execution\n // context first regardless.\n return;\n }\n\n if (!mightHavePendingSyncWork) {\n // Fast path. There's no sync work to do.\n return;\n } // There may or may not be synchronous work scheduled. Let's check.\n\n\n let didPerformSomeWork;\n let errors = null;\n isFlushingWork = true;\n\n do {\n didPerformSomeWork = false;\n let root = firstScheduledRoot;\n\n while (root !== null) {\n if (onlyLegacy && root.tag !== LegacyRoot) ; else {\n const workInProgressRoot = getWorkInProgressRoot();\n const workInProgressRootRenderLanes = getWorkInProgressRootRenderLanes();\n const nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n if (includesSyncLane(nextLanes)) {\n // This root has pending sync work. Flush it now.\n try {\n didPerformSomeWork = true;\n performSyncWorkOnRoot(root, nextLanes);\n } catch (error) {\n // Collect errors so we can rethrow them at the end\n if (errors === null) {\n errors = [error];\n } else {\n errors.push(error);\n }\n }\n }\n }\n\n root = root.next;\n }\n } while (didPerformSomeWork);\n\n isFlushingWork = false; // If any errors were thrown, rethrow them right before exiting.\n // TODO: Consider returning these to the caller, to allow them to decide\n // how/when to rethrow.\n\n if (errors !== null) {\n if (errors.length > 1) {\n if (typeof AggregateError === 'function') {\n // eslint-disable-next-line no-undef\n throw new AggregateError(errors);\n } else {\n for (let i = 1; i < errors.length; i++) {\n scheduleImmediateTask(throwError.bind(null, errors[i]));\n }\n\n const firstError = errors[0];\n throw firstError;\n }\n } else {\n const error = errors[0];\n throw error;\n }\n }\n}\n\nfunction throwError(error) {\n throw error;\n}\n\nfunction processRootScheduleInMicrotask() {\n // This function is always called inside a microtask. It should never be\n // called synchronously.\n didScheduleMicrotask = false;\n\n\n mightHavePendingSyncWork = false;\n const currentTime = now();\n let prev = null;\n let root = firstScheduledRoot;\n\n while (root !== null) {\n const next = root.next;\n\n if (currentEventTransitionLane !== NoLane && shouldAttemptEagerTransition()) {\n // A transition was scheduled during an event, but we're going to try to\n // render it synchronously anyway. We do this during a popstate event to\n // preserve the scroll position of the previous page.\n upgradePendingLaneToSync(root, currentEventTransitionLane);\n }\n\n const nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n\n if (nextLanes === NoLane) {\n // This root has no more pending work. Remove it from the schedule. To\n // guard against subtle reentrancy bugs, this microtask is the only place\n // we do this — you can add roots to the schedule whenever, but you can\n // only remove them here.\n // Null this out so we know it's been removed from the schedule.\n root.next = null;\n\n if (prev === null) {\n // This is the new head of the list\n firstScheduledRoot = next;\n } else {\n prev.next = next;\n }\n\n if (next === null) {\n // This is the new tail of the list\n lastScheduledRoot = prev;\n }\n } else {\n // This root still has work. Keep it in the list.\n prev = root;\n\n if (includesSyncLane(nextLanes)) {\n mightHavePendingSyncWork = true;\n }\n }\n\n root = next;\n }\n\n currentEventTransitionLane = NoLane; // At the end of the microtask, flush any pending synchronous work. This has\n // to come at the end, because it does actual rendering work that might throw.\n\n flushSyncWorkOnAllRoots();\n}\n\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n // This function is always called inside a microtask, or at the very end of a\n // rendering task right before we yield to the main thread. It should never be\n // called synchronously.\n //\n // TODO: Unless enableDeferRootSchedulingToMicrotask is off. We need to land\n // that ASAP to unblock additional features we have planned.\n //\n // This function also never performs React work synchronously; it should\n // only schedule work to be performed later, in a separate task or microtask.\n // Check if any lanes are being starved by other work. If so, mark them as\n // expired so we know to work on those next.\n markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.\n\n const workInProgressRoot = getWorkInProgressRoot();\n const workInProgressRootRenderLanes = getWorkInProgressRootRenderLanes();\n const nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n const existingCallbackNode = root.callbackNode;\n\n if ( // Check if there's nothing to work on\n nextLanes === NoLanes || // If this root is currently suspended and waiting for data to resolve, don't\n // schedule a task to render it. We'll either wait for a ping, or wait to\n // receive an update.\n //\n // Suspended render phase\n root === workInProgressRoot && isWorkLoopSuspendedOnData() || // Suspended commit phase\n root.cancelPendingCommit !== null) {\n // Fast path: There's nothing to work on.\n if (existingCallbackNode !== null) {\n cancelCallback(existingCallbackNode);\n }\n\n root.callbackNode = null;\n root.callbackPriority = NoLane;\n return NoLane;\n } // Schedule a new callback in the host environment.\n\n\n if (includesSyncLane(nextLanes)) {\n // Synchronous work is always flushed at the end of the microtask, so we\n // don't need to schedule an additional task.\n if (existingCallbackNode !== null) {\n cancelCallback(existingCallbackNode);\n }\n\n root.callbackPriority = SyncLane;\n root.callbackNode = null;\n return SyncLane;\n } else {\n // We use the highest priority lane to represent the priority of the callback.\n const existingCallbackPriority = root.callbackPriority;\n const newCallbackPriority = getHighestPriorityLane(nextLanes);\n\n if (newCallbackPriority === existingCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n // Scheduler task, rather than an `act` task, cancel it and re-schedule\n // on the `act` queue.\n !(false )) {\n // The priority hasn't changed. We can reuse the existing task.\n return newCallbackPriority;\n } else {\n // Cancel the existing callback. We'll schedule a new one below.\n cancelCallback(existingCallbackNode);\n }\n\n let schedulerPriorityLevel;\n\n switch (lanesToEventPriority(nextLanes)) {\n case DiscreteEventPriority:\n schedulerPriorityLevel = ImmediatePriority;\n break;\n\n case ContinuousEventPriority:\n schedulerPriorityLevel = UserBlockingPriority;\n break;\n\n case DefaultEventPriority:\n schedulerPriorityLevel = NormalPriority$1;\n break;\n\n case IdleEventPriority:\n schedulerPriorityLevel = IdlePriority;\n break;\n\n default:\n schedulerPriorityLevel = NormalPriority$1;\n break;\n }\n\n const newCallbackNode = scheduleCallback$2(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n root.callbackPriority = newCallbackPriority;\n root.callbackNode = newCallbackNode;\n return newCallbackPriority;\n }\n}\n\nfunction getContinuationForRoot(root, originalCallbackNode) {\n // This is called at the end of `performConcurrentWorkOnRoot` to determine\n // if we need to schedule a continuation task.\n //\n // Usually `scheduleTaskForRootDuringMicrotask` only runs inside a microtask;\n // however, since most of the logic for determining if we need a continuation\n // versus a new task is the same, we cheat a bit and call it here. This is\n // only safe to do because we know we're at the end of the browser task.\n // So although it's not an actual microtask, it might as well be.\n scheduleTaskForRootDuringMicrotask(root, now());\n\n if (root.callbackNode === originalCallbackNode) {\n // The task node scheduled for this root is the same one that's\n // currently executed. Need to return a continuation.\n return performConcurrentWorkOnRoot.bind(null, root);\n }\n\n return null;\n}\n\nfunction scheduleCallback$2(priorityLevel, callback) {\n {\n return scheduleCallback$3(priorityLevel, callback);\n }\n}\n\nfunction cancelCallback(callbackNode) {\n if (callbackNode !== null) {\n cancelCallback$1(callbackNode);\n }\n}\n\nfunction scheduleImmediateTask(cb) {\n // Alternatively, can we move this check to the host config?\n\n\n {\n scheduleMicrotask(() => {\n // In Safari, appending an iframe forces microtasks to run.\n // https://github.com/facebook/react/issues/22459\n // We don't support running callbacks in the middle of render\n // or commit so we need to check against that.\n const executionContext = getExecutionContext();\n\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n // Note that this would still prematurely flush the callbacks\n // if this happens outside render or commit phase (e.g. in an event).\n // Intentionally using a macrotask instead of a microtask here. This is\n // wrong semantically but it prevents an infinite loop. The bug is\n // Safari's, not ours, so we just do our best to not crash even though\n // the behavior isn't completely correct.\n scheduleCallback$3(ImmediatePriority, cb);\n return;\n }\n\n cb();\n });\n }\n}\n\nfunction requestTransitionLane( // This argument isn't used, it's only here to encourage the caller to\n// check that it's inside a transition before calling this function.\n// TODO: Make this non-nullable. Requires a tweak to useOptimistic.\ntransition) {\n // The algorithm for assigning an update to a lane should be stable for all\n // updates at the same priority within the same event. To do this, the\n // inputs to the algorithm must be the same.\n //\n // The trick we use is to cache the first of each of these inputs within an\n // event. Then reset the cached values once we can be sure the event is\n // over. Our heuristic for that is whenever we enter a concurrent work loop.\n if (currentEventTransitionLane === NoLane) {\n // All transitions within the same event are assigned the same lane.\n currentEventTransitionLane = claimNextTransitionLane();\n }\n\n return currentEventTransitionLane;\n}\n\n// transition updates that occur while the async action is still in progress\n// are treated as part of the action.\n//\n// The ideal behavior would be to treat each async function as an independent\n// action. However, without a mechanism like AsyncContext, we can't tell which\n// action an update corresponds to. So instead, we entangle them all into one.\n// The listeners to notify once the entangled scope completes.\n\nlet currentEntangledListeners = null; // The number of pending async actions in the entangled scope.\n\nlet currentEntangledPendingCount = 0; // The transition lane shared by all updates in the entangled scope.\n\nlet currentEntangledLane = NoLane; // A thenable that resolves when the entangled scope completes. It does not\n// resolve to a particular value because it's only used for suspending the UI\n// until the async action scope has completed.\n\nlet currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n // `thenable` is the return value of the async action scope function. Create\n // a combined thenable that resolves once every entangled scope function\n // has finished.\n if (currentEntangledListeners === null) {\n // There's no outer async action scope. Create a new one.\n const entangledListeners = currentEntangledListeners = [];\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n const entangledThenable = {\n status: 'pending',\n value: undefined,\n\n then(resolve) {\n entangledListeners.push(resolve);\n }\n\n };\n currentEntangledActionThenable = entangledThenable;\n }\n\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\n\nfunction pingEngtangledActionScope() {\n if (currentEntangledListeners !== null && --currentEntangledPendingCount === 0) {\n // All the actions have finished. Close the entangled async action scope\n // and notify all the listeners.\n if (currentEntangledActionThenable !== null) {\n const fulfilledThenable = currentEntangledActionThenable;\n fulfilledThenable.status = 'fulfilled';\n }\n\n const listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = NoLane;\n currentEntangledActionThenable = null;\n\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i];\n listener();\n }\n }\n}\n\nfunction chainThenableValue(thenable, result) {\n // Equivalent to: Promise.resolve(thenable).then(() => result), except we can\n // cheat a bit since we know that that this thenable is only ever consumed\n // by React.\n //\n // We don't technically require promise support on the client yet, hence this\n // extra code.\n const listeners = [];\n const thenableWithOverride = {\n status: 'pending',\n value: null,\n reason: null,\n\n then(resolve) {\n listeners.push(resolve);\n }\n\n };\n thenable.then(value => {\n const fulfilledThenable = thenableWithOverride;\n fulfilledThenable.status = 'fulfilled';\n fulfilledThenable.value = result;\n\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i];\n listener(result);\n }\n }, error => {\n const rejectedThenable = thenableWithOverride;\n rejectedThenable.status = 'rejected';\n rejectedThenable.reason = error;\n\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i]; // This is a perf hack where we call the `onFulfill` ping function\n // instead of `onReject`, because we know that React is the only\n // consumer of these promises, and it passes the same listener to both.\n // We also know that it will read the error directly off the\n // `.reason` field.\n\n listener(undefined);\n }\n });\n return thenableWithOverride;\n}\nfunction peekEntangledActionLane() {\n return currentEntangledLane;\n}\nfunction peekEntangledActionThenable() {\n return currentEntangledActionThenable;\n}\n\nconst UpdateState = 0;\nconst ReplaceState = 1;\nconst ForceUpdate = 2;\nconst CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.\n// It should only be read right after calling `processUpdateQueue`, via\n// `checkHasForceUpdateAfterProcessing`.\n\nlet hasForceUpdate = false;\n\nfunction initializeUpdateQueue(fiber) {\n const queue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null,\n lanes: NoLanes,\n hiddenCallbacks: null\n },\n callbacks: null\n };\n fiber.updateQueue = queue;\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n // Clone the update queue from current. Unless it's already a clone.\n const queue = workInProgress.updateQueue;\n const currentQueue = current.updateQueue;\n\n if (queue === currentQueue) {\n const clone = {\n baseState: currentQueue.baseState,\n firstBaseUpdate: currentQueue.firstBaseUpdate,\n lastBaseUpdate: currentQueue.lastBaseUpdate,\n shared: currentQueue.shared,\n callbacks: null\n };\n workInProgress.updateQueue = clone;\n }\n}\nfunction createUpdate(lane) {\n const update = {\n lane,\n tag: UpdateState,\n payload: null,\n callback: null,\n next: null\n };\n return update;\n}\nfunction enqueueUpdate(fiber, update, lane) {\n const updateQueue = fiber.updateQueue;\n\n if (updateQueue === null) {\n // Only occurs if the fiber has been unmounted.\n return null;\n }\n\n const sharedQueue = updateQueue.shared;\n\n if (isUnsafeClassRenderPhaseUpdate()) {\n // This is an unsafe render phase update. Add directly to the update\n // queue so we can process it immediately during the current render.\n const pending = sharedQueue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n sharedQueue.pending = update; // Update the childLanes even though we're most likely already rendering\n // this fiber. This is for backwards compatibility in the case where you\n // update a different component during render phase than the one that is\n // currently renderings (a pattern that is accompanied by a warning).\n\n return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);\n } else {\n return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);\n }\n}\nfunction entangleTransitions(root, fiber, lane) {\n const updateQueue = fiber.updateQueue;\n\n if (updateQueue === null) {\n // Only occurs if the fiber has been unmounted.\n return;\n }\n\n const sharedQueue = updateQueue.shared;\n\n if (isTransitionLane(lane)) {\n let queueLanes = sharedQueue.lanes; // If any entangled lanes are no longer pending on the root, then they must\n // have finished. We can remove them from the shared queue, which represents\n // a superset of the actually pending lanes. In some cases we may entangle\n // more than we need to, but that's OK. In fact it's worse if we *don't*\n // entangle when we should.\n\n queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n const newQueueLanes = mergeLanes(queueLanes, lane);\n sharedQueue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n // the lane finished since the last time we entangled it. So we need to\n // entangle it again, just to be sure.\n\n markRootEntangled(root, newQueueLanes);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n // Captured updates are updates that are thrown by a child during the render\n // phase. They should be discarded if the render is aborted. Therefore,\n // we should only put them on the work-in-progress queue, not the current one.\n let queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.\n\n const current = workInProgress.alternate;\n\n if (current !== null) {\n const currentQueue = current.updateQueue;\n\n if (queue === currentQueue) {\n // The work-in-progress queue is the same as current. This happens when\n // we bail out on a parent fiber that then captures an error thrown by\n // a child. Since we want to append the update only to the work-in\n // -progress queue, we need to clone the updates. We usually clone during\n // processUpdateQueue, but that didn't happen in this case because we\n // skipped over the parent when we bailed out.\n let newFirst = null;\n let newLast = null;\n const firstBaseUpdate = queue.firstBaseUpdate;\n\n if (firstBaseUpdate !== null) {\n // Loop through the updates and clone them.\n let update = firstBaseUpdate;\n\n do {\n const clone = {\n lane: update.lane,\n tag: update.tag,\n payload: update.payload,\n // When this update is rebased, we should not fire its\n // callback again.\n callback: null,\n next: null\n };\n\n if (newLast === null) {\n newFirst = newLast = clone;\n } else {\n newLast.next = clone;\n newLast = clone;\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n update = update.next;\n } while (update !== null); // Append the captured update the end of the cloned list.\n\n\n if (newLast === null) {\n newFirst = newLast = capturedUpdate;\n } else {\n newLast.next = capturedUpdate;\n newLast = capturedUpdate;\n }\n } else {\n // There are no base updates.\n newFirst = newLast = capturedUpdate;\n }\n\n queue = {\n baseState: currentQueue.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: currentQueue.shared,\n callbacks: currentQueue.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n } // Append the update to the end of the list.\n\n\n const lastBaseUpdate = queue.lastBaseUpdate;\n\n if (lastBaseUpdate === null) {\n queue.firstBaseUpdate = capturedUpdate;\n } else {\n lastBaseUpdate.next = capturedUpdate;\n }\n\n queue.lastBaseUpdate = capturedUpdate;\n}\n\nfunction getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {\n switch (update.tag) {\n case ReplaceState:\n {\n const payload = update.payload;\n\n if (typeof payload === 'function') {\n\n const nextState = payload.call(instance, prevState, nextProps);\n\n return nextState;\n } // State object\n\n\n return payload;\n }\n\n case CaptureUpdate:\n {\n workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;\n }\n // Intentional fallthrough\n\n case UpdateState:\n {\n const payload = update.payload;\n let partialState;\n\n if (typeof payload === 'function') {\n\n partialState = payload.call(instance, prevState, nextProps);\n } else {\n // Partial state object\n partialState = payload;\n }\n\n if (partialState === null || partialState === undefined) {\n // Null and undefined are treated as no-ops.\n return prevState;\n } // Merge the partial state and the previous state.\n\n\n return assign({}, prevState, partialState);\n }\n\n case ForceUpdate:\n {\n hasForceUpdate = true;\n return prevState;\n }\n }\n\n return prevState;\n}\n\nlet didReadFromEntangledAsyncAction = false; // Each call to processUpdateQueue should be accompanied by a call to this. It's\n// only in a separate function because in updateHostRoot, it must happen after\n// all the context stacks have been pushed to, to prevent a stack mismatch. A\n// bit unfortunate.\n\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n // Check if this update is part of a pending async action. If so, we'll\n // need to suspend until the action has finished, so that it's batched\n // together with future updates in the same action.\n // TODO: Once we support hooks inside useMemo (or an equivalent\n // memoization boundary like Forget), hoist this logic so that it only\n // suspends if the memo boundary produces a new value.\n if (didReadFromEntangledAsyncAction) {\n const entangledActionThenable = peekEntangledActionThenable();\n\n if (entangledActionThenable !== null) {\n // TODO: Instead of the throwing the thenable directly, throw a\n // special object like `use` does so we can detect if it's captured\n // by userspace.\n throw entangledActionThenable;\n }\n }\n}\nfunction processUpdateQueue(workInProgress, props, instance, renderLanes) {\n didReadFromEntangledAsyncAction = false; // This is always non-null on a ClassComponent or HostRoot\n\n const queue = workInProgress.updateQueue;\n hasForceUpdate = false;\n\n let firstBaseUpdate = queue.firstBaseUpdate;\n let lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.\n\n let pendingQueue = queue.shared.pending;\n\n if (pendingQueue !== null) {\n queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first\n // and last so that it's non-circular.\n\n const lastPendingUpdate = pendingQueue;\n const firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null; // Append pending updates to base queue\n\n if (lastBaseUpdate === null) {\n firstBaseUpdate = firstPendingUpdate;\n } else {\n lastBaseUpdate.next = firstPendingUpdate;\n }\n\n lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then\n // we need to transfer the updates to that queue, too. Because the base\n // queue is a singly-linked list with no cycles, we can append to both\n // lists and take advantage of structural sharing.\n // TODO: Pass `current` as argument\n\n const current = workInProgress.alternate;\n\n if (current !== null) {\n // This is always non-null on a ClassComponent or HostRoot\n const currentQueue = current.updateQueue;\n const currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n\n if (currentLastBaseUpdate !== lastBaseUpdate) {\n if (currentLastBaseUpdate === null) {\n currentQueue.firstBaseUpdate = firstPendingUpdate;\n } else {\n currentLastBaseUpdate.next = firstPendingUpdate;\n }\n\n currentQueue.lastBaseUpdate = lastPendingUpdate;\n }\n }\n } // These values may change as we process the queue.\n\n\n if (firstBaseUpdate !== null) {\n // Iterate through the list of updates to compute the result.\n let newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes\n // from the original lanes.\n\n let newLanes = NoLanes;\n let newBaseState = null;\n let newFirstBaseUpdate = null;\n let newLastBaseUpdate = null;\n let update = firstBaseUpdate;\n\n do {\n // An extra OffscreenLane bit is added to updates that were made to\n // a hidden tree, so that we can distinguish them from updates that were\n // already there when the tree was hidden.\n const updateLane = removeLanes(update.lane, OffscreenLane);\n const isHiddenUpdate = updateLane !== update.lane; // Check if this update was made while the tree was hidden. If so, then\n // it's not a \"base\" update and we should disregard the extra base lanes\n // that were added to renderLanes when we entered the Offscreen tree.\n\n const shouldSkipUpdate = isHiddenUpdate ? !isSubsetOfLanes(getWorkInProgressRootRenderLanes(), updateLane) : !isSubsetOfLanes(renderLanes, updateLane);\n\n if (shouldSkipUpdate) {\n // Priority is insufficient. Skip this update. If this is the first\n // skipped update, the previous update/state is the new base\n // update/state.\n const clone = {\n lane: updateLane,\n tag: update.tag,\n payload: update.payload,\n callback: update.callback,\n next: null\n };\n\n if (newLastBaseUpdate === null) {\n newFirstBaseUpdate = newLastBaseUpdate = clone;\n newBaseState = newState;\n } else {\n newLastBaseUpdate = newLastBaseUpdate.next = clone;\n } // Update the remaining priority in the queue.\n\n\n newLanes = mergeLanes(newLanes, updateLane);\n } else {\n // This update does have sufficient priority.\n // Check if this update is part of a pending async action. If so,\n // we'll need to suspend until the action has finished, so that it's\n // batched together with future updates in the same action.\n if (updateLane !== NoLane && updateLane === peekEntangledActionLane()) {\n didReadFromEntangledAsyncAction = true;\n }\n\n if (newLastBaseUpdate !== null) {\n const clone = {\n // This update is going to be committed so we never want uncommit\n // it. Using NoLane works because 0 is a subset of all bitmasks, so\n // this will never be skipped by the check above.\n lane: NoLane,\n tag: update.tag,\n payload: update.payload,\n // When this update is rebased, we should not fire its\n // callback again.\n callback: null,\n next: null\n };\n newLastBaseUpdate = newLastBaseUpdate.next = clone;\n } // Process this update.\n\n\n newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);\n const callback = update.callback;\n\n if (callback !== null) {\n workInProgress.flags |= Callback;\n\n if (isHiddenUpdate) {\n workInProgress.flags |= Visibility;\n }\n\n const callbacks = queue.callbacks;\n\n if (callbacks === null) {\n queue.callbacks = [callback];\n } else {\n callbacks.push(callback);\n }\n }\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n update = update.next;\n\n if (update === null) {\n pendingQueue = queue.shared.pending;\n\n if (pendingQueue === null) {\n break;\n } else {\n // An update was scheduled from inside a reducer. Add the new\n // pending updates to the end of the list and keep processing.\n const lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we\n // unravel them when transferring them to the base queue.\n\n const firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n update = firstPendingUpdate;\n queue.lastBaseUpdate = lastPendingUpdate;\n queue.shared.pending = null;\n }\n }\n } while (true);\n\n if (newLastBaseUpdate === null) {\n newBaseState = newState;\n }\n\n queue.baseState = newBaseState;\n queue.firstBaseUpdate = newFirstBaseUpdate;\n queue.lastBaseUpdate = newLastBaseUpdate;\n\n if (firstBaseUpdate === null) {\n // `queue.lanes` is used for entangling transitions. We can set it back to\n // zero once the queue is empty.\n queue.shared.lanes = NoLanes;\n } // Set the remaining expiration time to be whatever is remaining in the queue.\n // This should be fine because the only two other things that contribute to\n // expiration time are props and context. We're already in the middle of the\n // begin phase by the time we start processing the queue, so we've already\n // dealt with the props. Context in components that specify\n // shouldComponentUpdate is tricky; but we'll have to account for\n // that regardless.\n\n\n markSkippedUpdateLanes(newLanes);\n workInProgress.lanes = newLanes;\n workInProgress.memoizedState = newState;\n }\n}\n\nfunction callCallback(callback, context) {\n if (typeof callback !== 'function') {\n throw Error(formatProdErrorMessage(191, callback));\n }\n\n callback.call(context);\n}\n\nfunction resetHasForceUpdateBeforeProcessing() {\n hasForceUpdate = false;\n}\nfunction checkHasForceUpdateAfterProcessing() {\n return hasForceUpdate;\n}\nfunction deferHiddenCallbacks(updateQueue) {\n // When an update finishes on a hidden component, its callback should not\n // be fired until/unless the component is made visible again. Stash the\n // callback on the shared queue object so it can be fired later.\n const newHiddenCallbacks = updateQueue.callbacks;\n\n if (newHiddenCallbacks !== null) {\n const existingHiddenCallbacks = updateQueue.shared.hiddenCallbacks;\n\n if (existingHiddenCallbacks === null) {\n updateQueue.shared.hiddenCallbacks = newHiddenCallbacks;\n } else {\n updateQueue.shared.hiddenCallbacks = existingHiddenCallbacks.concat(newHiddenCallbacks);\n }\n }\n}\nfunction commitHiddenCallbacks(updateQueue, context) {\n // This component is switching from hidden -> visible. Commit any callbacks\n // that were previously deferred.\n const hiddenCallbacks = updateQueue.shared.hiddenCallbacks;\n\n if (hiddenCallbacks !== null) {\n updateQueue.shared.hiddenCallbacks = null;\n\n for (let i = 0; i < hiddenCallbacks.length; i++) {\n const callback = hiddenCallbacks[i];\n callCallback(callback, context);\n }\n }\n}\nfunction commitCallbacks(updateQueue, context) {\n const callbacks = updateQueue.callbacks;\n\n if (callbacks !== null) {\n updateQueue.callbacks = null;\n\n for (let i = 0; i < callbacks.length; i++) {\n const callback = callbacks[i];\n callCallback(callback, context);\n }\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n } // Test for A's keys different from B.\n\n\n for (let i = 0; i < keysA.length; i++) {\n const currentKey = keysA[i];\n\n if (!hasOwnProperty.call(objB, currentKey) || // $FlowFixMe[incompatible-use] lost refinement of `objB`\n !objectIs(objA[currentKey], objB[currentKey])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getThenablesFromState(state) {\n {\n const prodState = state;\n return prodState;\n }\n} // An error that is thrown (e.g. by `use`) to trigger Suspense. If we\n// detect this is caught by userspace, we'll log a warning in development.\n\n\nconst SuspenseException = Error(formatProdErrorMessage(460));\nconst SuspenseyCommitException = Error(formatProdErrorMessage(474)); // This is a noop thenable that we use to trigger a fallback in throwException.\n// TODO: It would be better to refactor throwException into multiple functions\n// so we can trigger a fallback directly without having to check the type. But\n// for now this will do.\n\nconst noopSuspenseyCommitThenable = {\n then() {\n }\n\n};\nfunction createThenableState() {\n // The ThenableState is created the first time a component suspends. If it\n // suspends again, we'll reuse the same state.\n {\n return [];\n }\n}\nfunction isThenableResolved(thenable) {\n const status = thenable.status;\n return status === 'fulfilled' || status === 'rejected';\n}\n\nfunction noop$2() {}\n\nfunction trackUsedThenable(thenableState, thenable, index) {\n\n const trackedThenables = getThenablesFromState(thenableState);\n const previous = trackedThenables[index];\n\n if (previous === undefined) {\n trackedThenables.push(thenable);\n } else {\n if (previous !== thenable) {\n // intentionally ignore.\n\n\n thenable.then(noop$2, noop$2);\n thenable = previous;\n }\n } // We use an expando to track the status and result of a thenable so that we\n // can synchronously unwrap the value. Think of this as an extension of the\n // Promise API, or a custom interface that is a superset of Thenable.\n //\n // If the thenable doesn't have a status, set it to \"pending\" and attach\n // a listener that will update its status and result when it resolves.\n\n\n switch (thenable.status) {\n case 'fulfilled':\n {\n const fulfilledValue = thenable.value;\n return fulfilledValue;\n }\n\n case 'rejected':\n {\n const rejectedError = thenable.reason;\n checkIfUseWrappedInAsyncCatch(rejectedError);\n throw rejectedError;\n }\n\n default:\n {\n if (typeof thenable.status === 'string') {\n // Only instrument the thenable if the status if not defined. If\n // it's defined, but an unknown value, assume it's been instrumented by\n // some custom userspace implementation. We treat it as \"pending\".\n // Attach a dummy listener, to ensure that any lazy initialization can\n // happen. Flight lazily parses JSON when the value is actually awaited.\n thenable.then(noop$2, noop$2);\n } else {\n // This is an uncached thenable that we haven't seen before.\n // Detect infinite ping loops caused by uncached promises.\n const root = getWorkInProgressRoot();\n\n if (root !== null && root.shellSuspendCounter > 100) {\n // This root has suspended repeatedly in the shell without making any\n // progress (i.e. committing something). This is highly suggestive of\n // an infinite ping loop, often caused by an accidental Async Client\n // Component.\n //\n // During a transition, we can suspend the work loop until the promise\n // to resolve, but this is a sync render, so that's not an option. We\n // also can't show a fallback, because none was provided. So our last\n // resort is to throw an error.\n //\n // TODO: Remove this error in a future release. Other ways of handling\n // this case include forcing a concurrent render, or putting the whole\n // root into offscreen mode.\n throw Error(formatProdErrorMessage(482));\n }\n\n const pendingThenable = thenable;\n pendingThenable.status = 'pending';\n pendingThenable.then(fulfilledValue => {\n if (thenable.status === 'pending') {\n const fulfilledThenable = thenable;\n fulfilledThenable.status = 'fulfilled';\n fulfilledThenable.value = fulfilledValue;\n }\n }, error => {\n if (thenable.status === 'pending') {\n const rejectedThenable = thenable;\n rejectedThenable.status = 'rejected';\n rejectedThenable.reason = error;\n }\n });\n } // Check one more time in case the thenable resolved synchronously.\n\n\n switch (thenable.status) {\n case 'fulfilled':\n {\n const fulfilledThenable = thenable;\n return fulfilledThenable.value;\n }\n\n case 'rejected':\n {\n const rejectedThenable = thenable;\n const rejectedError = rejectedThenable.reason;\n checkIfUseWrappedInAsyncCatch(rejectedError);\n throw rejectedError;\n }\n } // Suspend.\n //\n // Throwing here is an implementation detail that allows us to unwind the\n // call stack. But we shouldn't allow it to leak into userspace. Throw an\n // opaque placeholder value instead of the actual thenable. If it doesn't\n // get captured by the work loop, log a warning, because that means\n // something in userspace must have caught it.\n\n\n suspendedThenable = thenable;\n\n throw SuspenseException;\n }\n }\n}\nfunction suspendCommit() {\n // This extra indirection only exists so it can handle passing\n // noopSuspenseyCommitThenable through to throwException.\n // TODO: Factor the thenable check out of throwException\n suspendedThenable = noopSuspenseyCommitThenable;\n throw SuspenseyCommitException;\n} // This is used to track the actual thenable that suspended so it can be\n// passed to the rest of the Suspense implementation — which, for historical\n// reasons, expects to receive a thenable.\n\nlet suspendedThenable = null;\nfunction getSuspendedThenable() {\n // This is called right after `use` suspends by throwing an exception. `use`\n // throws an opaque value instead of the thenable itself so that it can't be\n // caught in userspace. Then the work loop accesses the actual thenable using\n // this function.\n if (suspendedThenable === null) {\n throw Error(formatProdErrorMessage(459));\n }\n\n const thenable = suspendedThenable;\n suspendedThenable = null;\n\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n // This check runs in prod, too, because it prevents a more confusing\n // downstream error, where SuspenseException is caught by a promise and\n // thrown asynchronously.\n // TODO: Another way to prevent SuspenseException from leaking into an async\n // execution context is to check the dispatcher every time `use` is called,\n // or some equivalent. That might be preferable for other reasons, too, since\n // it matches how we prevent similar mistakes for other hooks.\n if (rejectedReason === SuspenseException) {\n throw Error(formatProdErrorMessage(483));\n }\n}\n\nlet thenableState$1 = null;\nlet thenableIndexCounter$1 = 0;\n\nfunction unwrapThenable(thenable) {\n const index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n\n if (thenableState$1 === null) {\n thenableState$1 = createThenableState();\n }\n\n return trackUsedThenable(thenableState$1, thenable, index);\n}\n\nfunction coerceRef(returnFiber, current, element) {\n const mixedRef = element.ref;\n\n if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n\n if (element._owner) {\n const owner = element._owner;\n let inst;\n\n if (owner) {\n const ownerFiber = owner;\n\n if (ownerFiber.tag !== ClassComponent) {\n throw Error(formatProdErrorMessage(309));\n }\n\n inst = ownerFiber.stateNode;\n }\n\n if (!inst) {\n throw Error(formatProdErrorMessage(147, mixedRef));\n } // Assigning this to a const so Flow knows it won't change in the closure\n\n\n const resolvedInst = inst;\n\n const stringRef = '' + mixedRef; // Check if previous string ref matches new string ref\n\n if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {\n return current.ref;\n }\n\n const ref = function (value) {\n const refs = resolvedInst.refs;\n\n if (value === null) {\n delete refs[stringRef];\n } else {\n refs[stringRef] = value;\n }\n };\n\n ref._stringRef = stringRef;\n return ref;\n } else {\n if (typeof mixedRef !== 'string') {\n throw Error(formatProdErrorMessage(284));\n }\n\n if (!element._owner) {\n throw Error(formatProdErrorMessage(290, mixedRef));\n }\n }\n }\n\n return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n // $FlowFixMe[method-unbinding]\n const childString = Object.prototype.toString.call(newChild);\n throw Error(formatProdErrorMessage(31, childString === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : childString));\n}\n\nfunction resolveLazy(lazyType) {\n const payload = lazyType._payload;\n const init = lazyType._init;\n return init(payload);\n} // This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\n\n\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (!shouldTrackSideEffects) {\n // Noop.\n return;\n }\n\n const deletions = returnFiber.deletions;\n\n if (deletions === null) {\n returnFiber.deletions = [childToDelete];\n returnFiber.flags |= ChildDeletion;\n } else {\n deletions.push(childToDelete);\n }\n }\n\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) {\n // Noop.\n return null;\n } // TODO: For the shouldClone case, this could be micro-optimized a bit by\n // assuming that after the first child we've already added everything.\n\n\n let childToDelete = currentFirstChild;\n\n while (childToDelete !== null) {\n deleteChild(returnFiber, childToDelete);\n childToDelete = childToDelete.sibling;\n }\n\n return null;\n }\n\n function mapRemainingChildren(returnFiber, currentFirstChild) {\n // Add the remaining children to a temporary map so that we can find them by\n // keys quickly. Implicit (null) keys get added to this set with their index\n // instead.\n const existingChildren = new Map();\n let existingChild = currentFirstChild;\n\n while (existingChild !== null) {\n if (existingChild.key !== null) {\n existingChildren.set(existingChild.key, existingChild);\n } else {\n existingChildren.set(existingChild.index, existingChild);\n }\n\n existingChild = existingChild.sibling;\n }\n\n return existingChildren;\n }\n\n function useFiber(fiber, pendingProps) {\n // We currently set sibling to null and index to 0 here because it is easy\n // to forget to do before returning it. E.g. for the single child case.\n const clone = createWorkInProgress(fiber, pendingProps);\n clone.index = 0;\n clone.sibling = null;\n return clone;\n }\n\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n\n if (!shouldTrackSideEffects) {\n // During hydration, the useId algorithm needs to know which fibers are\n // part of a list of children (arrays, iterators).\n newFiber.flags |= Forked;\n return lastPlacedIndex;\n }\n\n const current = newFiber.alternate;\n\n if (current !== null) {\n const oldIndex = current.index;\n\n if (oldIndex < lastPlacedIndex) {\n // This is a move.\n newFiber.flags |= Placement | PlacementDEV;\n return lastPlacedIndex;\n } else {\n // This item can stay in place.\n return oldIndex;\n }\n } else {\n // This is an insertion.\n newFiber.flags |= Placement | PlacementDEV;\n return lastPlacedIndex;\n }\n }\n\n function placeSingleChild(newFiber) {\n // This is simpler for the single child case. We only need to do a\n // placement for inserting new children.\n if (shouldTrackSideEffects && newFiber.alternate === null) {\n newFiber.flags |= Placement | PlacementDEV;\n }\n\n return newFiber;\n }\n\n function updateTextNode(returnFiber, current, textContent, lanes, debugInfo) {\n if (current === null || current.tag !== HostText) {\n // Insert\n const created = createFiberFromText(textContent, returnFiber.mode, lanes);\n created.return = returnFiber;\n\n return created;\n } else {\n // Update\n const existing = useFiber(current, textContent);\n existing.return = returnFiber;\n\n return existing;\n }\n }\n\n function updateElement(returnFiber, current, element, lanes, debugInfo) {\n const elementType = element.type;\n\n if (elementType === REACT_FRAGMENT_TYPE) {\n return updateFragment(returnFiber, current, element.props.children, lanes, element.key);\n }\n\n if (current !== null) {\n if (current.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n false) || // Lazy types should reconcile their resolved type.\n // We need to do this after the Hot Reloading check above,\n // because hot reloading has different semantics than prod because\n // it doesn't resuspend. So we can't let the call below suspend.\n typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current.type) {\n // Move based on index\n const existing = useFiber(current, element.props);\n existing.ref = coerceRef(returnFiber, current, element);\n existing.return = returnFiber;\n\n return existing;\n }\n } // Insert\n\n\n const created = createFiberFromElement(element, returnFiber.mode, lanes);\n created.ref = coerceRef(returnFiber, current, element);\n created.return = returnFiber;\n\n return created;\n }\n\n function updatePortal(returnFiber, current, portal, lanes, debugInfo) {\n if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n // Insert\n const created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n created.return = returnFiber;\n\n return created;\n } else {\n // Update\n const existing = useFiber(current, portal.children || []);\n existing.return = returnFiber;\n\n return existing;\n }\n }\n\n function updateFragment(returnFiber, current, fragment, lanes, key, debugInfo) {\n if (current === null || current.tag !== Fragment) {\n // Insert\n const created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n created.return = returnFiber;\n\n return created;\n } else {\n // Update\n const existing = useFiber(current, fragment);\n existing.return = returnFiber;\n\n return existing;\n }\n }\n\n function createChild(returnFiber, newChild, lanes, debugInfo) {\n if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n // Text nodes don't have keys. If the previous node is implicitly keyed\n // we can continue to replace it without aborting even if it is not a text\n // node.\n const created = createFiberFromText('' + newChild, returnFiber.mode, lanes);\n created.return = returnFiber;\n\n return created;\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n const created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n created.ref = coerceRef(returnFiber, null, newChild);\n created.return = returnFiber;\n\n return created;\n }\n\n case REACT_PORTAL_TYPE:\n {\n const created = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n created.return = returnFiber;\n\n return created;\n }\n\n case REACT_LAZY_TYPE:\n {\n const payload = newChild._payload;\n const init = newChild._init;\n return createChild(returnFiber, init(payload), lanes);\n }\n }\n\n if (isArray(newChild) || getIteratorFn(newChild)) {\n const created = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n created.return = returnFiber;\n\n return created;\n } // Usable node types\n //\n // Unwrap the inner value and recursively call this function again.\n\n\n if (typeof newChild.then === 'function') {\n const thenable = newChild;\n return createChild(returnFiber, unwrapThenable(thenable), lanes);\n }\n\n if (newChild.$$typeof === REACT_CONTEXT_TYPE) {\n const context = newChild;\n return createChild(returnFiber, readContextDuringReconcilation(returnFiber, context, lanes), lanes);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n return null;\n }\n\n function updateSlot(returnFiber, oldFiber, newChild, lanes, debugInfo) {\n // Update the fiber if the keys match, otherwise return null.\n const key = oldFiber !== null ? oldFiber.key : null;\n\n if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n // Text nodes don't have keys. If the previous node is implicitly keyed\n // we can continue to replace it without aborting even if it is not a text\n // node.\n if (key !== null) {\n return null;\n }\n\n return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n if (newChild.key === key) {\n return updateElement(returnFiber, oldFiber, newChild, lanes);\n } else {\n return null;\n }\n }\n\n case REACT_PORTAL_TYPE:\n {\n if (newChild.key === key) {\n return updatePortal(returnFiber, oldFiber, newChild, lanes);\n } else {\n return null;\n }\n }\n\n case REACT_LAZY_TYPE:\n {\n const payload = newChild._payload;\n const init = newChild._init;\n return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n }\n }\n\n if (isArray(newChild) || getIteratorFn(newChild)) {\n if (key !== null) {\n return null;\n }\n\n return updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n } // Usable node types\n //\n // Unwrap the inner value and recursively call this function again.\n\n\n if (typeof newChild.then === 'function') {\n const thenable = newChild;\n return updateSlot(returnFiber, oldFiber, unwrapThenable(thenable), lanes);\n }\n\n if (newChild.$$typeof === REACT_CONTEXT_TYPE) {\n const context = newChild;\n return updateSlot(returnFiber, oldFiber, readContextDuringReconcilation(returnFiber, context, lanes), lanes);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n return null;\n }\n\n function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes, debugInfo) {\n if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n // Text nodes don't have keys, so we neither have to check the old nor\n // new node for the key. If both are text nodes, they match.\n const matchedFiber = existingChildren.get(newIdx) || null;\n return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);\n }\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n {\n const matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n return updateElement(returnFiber, matchedFiber, newChild, lanes);\n }\n\n case REACT_PORTAL_TYPE:\n {\n const matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n return updatePortal(returnFiber, matchedFiber, newChild, lanes);\n }\n\n case REACT_LAZY_TYPE:\n const payload = newChild._payload;\n const init = newChild._init;\n return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n }\n\n if (isArray(newChild) || getIteratorFn(newChild)) {\n const matchedFiber = existingChildren.get(newIdx) || null;\n return updateFragment(returnFiber, matchedFiber, newChild, lanes, null);\n } // Usable node types\n //\n // Unwrap the inner value and recursively call this function again.\n\n\n if (typeof newChild.then === 'function') {\n const thenable = newChild;\n return updateFromMap(existingChildren, returnFiber, newIdx, unwrapThenable(thenable), lanes);\n }\n\n if (newChild.$$typeof === REACT_CONTEXT_TYPE) {\n const context = newChild;\n return updateFromMap(existingChildren, returnFiber, newIdx, readContextDuringReconcilation(returnFiber, context, lanes), lanes);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n return null;\n }\n\n function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes, debugInfo) {\n\n let resultingFirstChild = null;\n let previousNewFiber = null;\n let oldFiber = currentFirstChild;\n let lastPlacedIndex = 0;\n let newIdx = 0;\n let nextOldFiber = null;\n\n for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n if (oldFiber.index > newIdx) {\n nextOldFiber = oldFiber;\n oldFiber = null;\n } else {\n nextOldFiber = oldFiber.sibling;\n }\n\n const newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n\n if (newFiber === null) {\n // TODO: This breaks on empty slots like null children. That's\n // unfortunate because it triggers the slow path all the time. We need\n // a better way to communicate whether this was a miss or null,\n // boolean, undefined, etc.\n if (oldFiber === null) {\n oldFiber = nextOldFiber;\n }\n\n break;\n }\n\n if (shouldTrackSideEffects) {\n if (oldFiber && newFiber.alternate === null) {\n // We matched the slot, but we didn't reuse the existing fiber, so we\n // need to delete the existing child.\n deleteChild(returnFiber, oldFiber);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n // TODO: Defer siblings if we're not at the right index for this slot.\n // I.e. if we had null values before, then we want to defer this\n // for each null value. However, we also don't want to call updateSlot\n // with the previous one.\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n\n if (newIdx === newChildren.length) {\n // We've reached the end of the new children. We can delete the rest.\n deleteRemainingChildren(returnFiber, oldFiber);\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n }\n\n if (oldFiber === null) {\n // If we don't have any more existing children we can choose a fast path\n // since the rest will all be insertions.\n for (; newIdx < newChildren.length; newIdx++) {\n const newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n\n if (newFiber === null) {\n continue;\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n }\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n } // Add all children to a key map for quick lookups.\n\n\n const existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n for (; newIdx < newChildren.length; newIdx++) {\n const newFiber = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n\n if (newFiber !== null) {\n if (shouldTrackSideEffects) {\n if (newFiber.alternate !== null) {\n // The new fiber is a work in progress, but if there exists a\n // current, that means that we reused the fiber. We need to delete\n // it from the child list so that we don't add it to the deletion\n // list.\n existingChildren.delete(newFiber.key === null ? newIdx : newFiber.key);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n }\n }\n\n if (shouldTrackSideEffects) {\n // Any existing children that weren't consumed above were deleted. We need\n // to add them to the deletion list.\n existingChildren.forEach(child => deleteChild(returnFiber, child));\n }\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n }\n\n function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes, debugInfo) {\n // This is the same implementation as reconcileChildrenArray(),\n // but using the iterator instead.\n const iteratorFn = getIteratorFn(newChildrenIterable);\n\n if (typeof iteratorFn !== 'function') {\n throw Error(formatProdErrorMessage(150));\n }\n\n const newChildren = iteratorFn.call(newChildrenIterable);\n\n if (newChildren == null) {\n throw Error(formatProdErrorMessage(151));\n }\n\n let resultingFirstChild = null;\n let previousNewFiber = null;\n let oldFiber = currentFirstChild;\n let lastPlacedIndex = 0;\n let newIdx = 0;\n let nextOldFiber = null;\n let step = newChildren.next();\n\n for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n if (oldFiber.index > newIdx) {\n nextOldFiber = oldFiber;\n oldFiber = null;\n } else {\n nextOldFiber = oldFiber.sibling;\n }\n\n const newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n\n if (newFiber === null) {\n // TODO: This breaks on empty slots like null children. That's\n // unfortunate because it triggers the slow path all the time. We need\n // a better way to communicate whether this was a miss or null,\n // boolean, undefined, etc.\n if (oldFiber === null) {\n oldFiber = nextOldFiber;\n }\n\n break;\n }\n\n if (shouldTrackSideEffects) {\n if (oldFiber && newFiber.alternate === null) {\n // We matched the slot, but we didn't reuse the existing fiber, so we\n // need to delete the existing child.\n deleteChild(returnFiber, oldFiber);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n // TODO: Defer siblings if we're not at the right index for this slot.\n // I.e. if we had null values before, then we want to defer this\n // for each null value. However, we also don't want to call updateSlot\n // with the previous one.\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n\n if (step.done) {\n // We've reached the end of the new children. We can delete the rest.\n deleteRemainingChildren(returnFiber, oldFiber);\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n }\n\n if (oldFiber === null) {\n // If we don't have any more existing children we can choose a fast path\n // since the rest will all be insertions.\n for (; !step.done; newIdx++, step = newChildren.next()) {\n const newFiber = createChild(returnFiber, step.value, lanes);\n\n if (newFiber === null) {\n continue;\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n // TODO: Move out of the loop. This only happens for the first run.\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n }\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n } // Add all children to a key map for quick lookups.\n\n\n const existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n for (; !step.done; newIdx++, step = newChildren.next()) {\n const newFiber = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n\n if (newFiber !== null) {\n if (shouldTrackSideEffects) {\n if (newFiber.alternate !== null) {\n // The new fiber is a work in progress, but if there exists a\n // current, that means that we reused the fiber. We need to delete\n // it from the child list so that we don't add it to the deletion\n // list.\n existingChildren.delete(newFiber.key === null ? newIdx : newFiber.key);\n }\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n\n previousNewFiber = newFiber;\n }\n }\n\n if (shouldTrackSideEffects) {\n // Any existing children that weren't consumed above were deleted. We need\n // to add them to the deletion list.\n existingChildren.forEach(child => deleteChild(returnFiber, child));\n }\n\n if (getIsHydrating()) {\n const numberOfForks = newIdx;\n pushTreeFork(returnFiber, numberOfForks);\n }\n\n return resultingFirstChild;\n }\n\n function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n // There's no need to check for keys on text nodes since we don't have a\n // way to define them.\n if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n // We already have an existing node so let's just update it and delete\n // the rest.\n deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n const existing = useFiber(currentFirstChild, textContent);\n existing.return = returnFiber;\n return existing;\n } // The existing first child is not a text node so we need to create one\n // and delete the existing ones.\n\n\n deleteRemainingChildren(returnFiber, currentFirstChild);\n const created = createFiberFromText(textContent, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n }\n\n function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes, debugInfo) {\n const key = element.key;\n let child = currentFirstChild;\n\n while (child !== null) {\n // TODO: If key === null and child.key === null, then this only applies to\n // the first item in the list.\n if (child.key === key) {\n const elementType = element.type;\n\n if (elementType === REACT_FRAGMENT_TYPE) {\n if (child.tag === Fragment) {\n deleteRemainingChildren(returnFiber, child.sibling);\n const existing = useFiber(child, element.props.children);\n existing.return = returnFiber;\n\n return existing;\n }\n } else {\n if (child.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n false) || // Lazy types should reconcile their resolved type.\n // We need to do this after the Hot Reloading check above,\n // because hot reloading has different semantics than prod because\n // it doesn't resuspend. So we can't let the call below suspend.\n typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n deleteRemainingChildren(returnFiber, child.sibling);\n const existing = useFiber(child, element.props);\n existing.ref = coerceRef(returnFiber, child, element);\n existing.return = returnFiber;\n\n return existing;\n }\n } // Didn't match.\n\n\n deleteRemainingChildren(returnFiber, child);\n break;\n } else {\n deleteChild(returnFiber, child);\n }\n\n child = child.sibling;\n }\n\n if (element.type === REACT_FRAGMENT_TYPE) {\n const created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n created.return = returnFiber;\n\n return created;\n } else {\n const created = createFiberFromElement(element, returnFiber.mode, lanes);\n created.ref = coerceRef(returnFiber, currentFirstChild, element);\n created.return = returnFiber;\n\n return created;\n }\n }\n\n function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes, debugInfo) {\n const key = portal.key;\n let child = currentFirstChild;\n\n while (child !== null) {\n // TODO: If key === null and child.key === null, then this only applies to\n // the first item in the list.\n if (child.key === key) {\n if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n deleteRemainingChildren(returnFiber, child.sibling);\n const existing = useFiber(child, portal.children || []);\n existing.return = returnFiber;\n return existing;\n } else {\n deleteRemainingChildren(returnFiber, child);\n break;\n }\n } else {\n deleteChild(returnFiber, child);\n }\n\n child = child.sibling;\n }\n\n const created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n created.return = returnFiber;\n return created;\n } // This API will tag the children with the side-effect of the reconciliation\n // itself. They will be added to the side-effect list as we pass through the\n // children and the parent.\n\n\n function reconcileChildFibersImpl(returnFiber, currentFirstChild, newChild, lanes, debugInfo) {\n // This function is not recursive.\n // If the top level item is an array, we treat it as a set of children,\n // not as a fragment. Nested arrays on the other hand will be treated as\n // fragment nodes. Recursion happens at the normal flow.\n // Handle top level unkeyed fragments as if they were arrays.\n // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n // We treat the ambiguous cases above the same.\n // TODO: Let's use recursion like we do for Usable nodes?\n const isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n\n if (isUnkeyedTopLevelFragment) {\n newChild = newChild.props.children;\n } // Handle object types\n\n\n if (typeof newChild === 'object' && newChild !== null) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n\n case REACT_PORTAL_TYPE:\n return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n\n case REACT_LAZY_TYPE:\n const payload = newChild._payload;\n const init = newChild._init;\n return reconcileChildFibersImpl(returnFiber, currentFirstChild, init(payload), lanes);\n }\n\n if (isArray(newChild)) {\n return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n }\n\n if (getIteratorFn(newChild)) {\n return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n } // Usables are a valid React node type. When React encounters a Usable in\n // a child position, it unwraps it using the same algorithm as `use`. For\n // example, for promises, React will throw an exception to unwind the\n // stack, then replay the component once the promise resolves.\n //\n // A difference from `use` is that React will keep unwrapping the value\n // until it reaches a non-Usable type.\n //\n // e.g. Usable<Usable<Usable<T>>> should resolve to T\n //\n // The structure is a bit unfortunate. Ideally, we shouldn't need to\n // replay the entire begin phase of the parent fiber in order to reconcile\n // the children again. This would require a somewhat significant refactor,\n // because reconcilation happens deep within the begin phase, and\n // depending on the type of work, not always at the end. We should\n // consider as an future improvement.\n\n\n if (typeof newChild.then === 'function') {\n const thenable = newChild;\n return reconcileChildFibersImpl(returnFiber, currentFirstChild, unwrapThenable(thenable), lanes);\n }\n\n if (newChild.$$typeof === REACT_CONTEXT_TYPE) {\n const context = newChild;\n return reconcileChildFibersImpl(returnFiber, currentFirstChild, readContextDuringReconcilation(returnFiber, context, lanes), lanes);\n }\n\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n\n if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));\n }\n\n\n return deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n\n function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {\n // This indirection only exists so we can reset `thenableState` at the end.\n // It should get inlined by Closure.\n thenableIndexCounter$1 = 0;\n const firstChildFiber = reconcileChildFibersImpl(returnFiber, currentFirstChild, newChild, lanes);\n thenableState$1 = null; // Don't bother to reset `thenableIndexCounter` to 0 because it always gets\n // set at the beginning.\n\n return firstChildFiber;\n }\n\n return reconcileChildFibers;\n}\n\nconst reconcileChildFibers = createChildReconciler(true);\nconst mountChildFibers = createChildReconciler(false);\nfunction resetChildReconcilerOnUnwind() {\n // On unwind, clear any pending thenables that were used.\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n}\nfunction cloneChildFibers(current, workInProgress) {\n if (current !== null && workInProgress.child !== current.child) {\n throw Error(formatProdErrorMessage(153));\n }\n\n if (workInProgress.child === null) {\n return;\n }\n\n let currentChild = workInProgress.child;\n let newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n workInProgress.child = newChild;\n newChild.return = workInProgress;\n\n while (currentChild.sibling !== null) {\n currentChild = currentChild.sibling;\n newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n newChild.return = workInProgress;\n }\n\n newChild.sibling = null;\n} // Reset a workInProgress child set to prepare it for a second pass.\n\nfunction resetChildFibers(workInProgress, lanes) {\n let child = workInProgress.child;\n\n while (child !== null) {\n resetWorkInProgress(child, lanes);\n child = child.sibling;\n }\n}\n\n// TODO: This isn't being used yet, but it's intended to replace the\n// InvisibleParentContext that is currently managed by SuspenseContext.\n\nconst currentTreeHiddenStackCursor = createCursor(null);\nconst prevEntangledRenderLanesCursor = createCursor(NoLanes);\nfunction pushHiddenContext(fiber, context) {\n const prevEntangledRenderLanes = getEntangledRenderLanes();\n push(prevEntangledRenderLanesCursor, prevEntangledRenderLanes);\n push(currentTreeHiddenStackCursor, context); // When rendering a subtree that's currently hidden, we must include all\n // lanes that would have rendered if the hidden subtree hadn't been deferred.\n // That is, in order to reveal content from hidden -> visible, we must commit\n // all the updates that we skipped when we originally hid the tree.\n\n setEntangledRenderLanes(mergeLanes(prevEntangledRenderLanes, context.baseLanes));\n}\nfunction reuseHiddenContextOnStack(fiber) {\n // This subtree is not currently hidden, so we don't need to add any lanes\n // to the render lanes. But we still need to push something to avoid a\n // context mismatch. Reuse the existing context on the stack.\n push(prevEntangledRenderLanesCursor, getEntangledRenderLanes());\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext(fiber) {\n // Restore the previous render lanes from the stack\n setEntangledRenderLanes(prevEntangledRenderLanesCursor.current);\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nfunction isCurrentTreeHidden() {\n return currentTreeHiddenStackCursor.current !== null;\n}\n\n// suspends, i.e. it's the nearest `catch` block on the stack.\n\nconst suspenseHandlerStackCursor = createCursor(null); // Represents the outermost boundary that is not visible in the current tree.\n// Everything above this is the \"shell\". When this is null, it means we're\n// rendering in the shell of the app. If it's non-null, it means we're rendering\n// deeper than the shell, inside a new tree that wasn't already visible.\n//\n// The main way we use this concept is to determine whether showing a fallback\n// would result in a desirable or undesirable loading state. Activing a fallback\n// in the shell is considered an undersirable loading state, because it would\n// mean hiding visible (albeit stale) content in the current tree — we prefer to\n// show the stale content, rather than switch to a fallback. But showing a\n// fallback in a new tree is fine, because there's no stale content to\n// prefer instead.\n\nlet shellBoundary = null;\nfunction getShellBoundary() {\n return shellBoundary;\n}\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n // TODO: Pass as argument\n const current = handler.alternate;\n // propagated a single level. For example, when ForceSuspenseFallback is set,\n // it should only force the nearest Suspense boundary into fallback mode.\n\n pushSuspenseListContext(handler, setDefaultShallowSuspenseListContext(suspenseStackCursor.current)); // Experimental feature: Some Suspense boundaries are marked as having an\n // to push a nested Suspense handler, because it will get replaced by the\n // outer fallback, anyway. Consider this as a future optimization.\n\n\n push(suspenseHandlerStackCursor, handler);\n\n if (shellBoundary === null) {\n if (current === null || isCurrentTreeHidden()) {\n // This boundary is not visible in the current UI.\n shellBoundary = handler;\n } else {\n const prevState = current.memoizedState;\n\n if (prevState !== null) {\n // This boundary is showing a fallback in the current UI.\n shellBoundary = handler;\n }\n }\n }\n}\nfunction pushFallbackTreeSuspenseHandler(fiber) {\n // We're about to render the fallback. If something in the fallback suspends,\n // it's akin to throwing inside of a `catch` block. This boundary should not\n // capture. Reuse the existing handler on the stack.\n reuseSuspenseHandlerOnStack(fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n if (fiber.tag === OffscreenComponent) {\n // A SuspenseList context is only pushed here to avoid a push/pop mismatch.\n // Reuse the current value on the stack.\n // TODO: We can avoid needing to push here by by forking popSuspenseHandler\n // into separate functions for Suspense and Offscreen.\n pushSuspenseListContext(fiber, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n\n if (shellBoundary !== null) ; else {\n const current = fiber.alternate;\n\n if (current !== null) {\n const prevState = current.memoizedState;\n\n if (prevState !== null) {\n // This is the first boundary in the stack that's already showing\n // a fallback. So everything outside is considered the shell.\n shellBoundary = fiber;\n }\n }\n }\n } else {\n // This is a LegacyHidden component.\n reuseSuspenseHandlerOnStack(fiber);\n }\n}\nfunction reuseSuspenseHandlerOnStack(fiber) {\n pushSuspenseListContext(fiber, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, getSuspenseHandler());\n}\nfunction getSuspenseHandler() {\n return suspenseHandlerStackCursor.current;\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n\n if (shellBoundary === fiber) {\n // Popping back into the shell.\n shellBoundary = null;\n }\n\n popSuspenseListContext();\n} // SuspenseList context\n// TODO: Move to a separate module? We may change the SuspenseList\n// implementation to hide/show in the commit phase, anyway.\n\nconst DefaultSuspenseContext = 0b00;\nconst SubtreeSuspenseContextMask = 0b01; // ForceSuspenseFallback can be used by SuspenseList to force newly added\n// items into their fallback state during one of the render passes.\n\nconst ForceSuspenseFallback = 0b10;\nconst suspenseStackCursor = createCursor(DefaultSuspenseContext);\nfunction hasSuspenseListContext(parentContext, flag) {\n return (parentContext & flag) !== 0;\n}\nfunction setDefaultShallowSuspenseListContext(parentContext) {\n return parentContext & SubtreeSuspenseContextMask;\n}\nfunction setShallowSuspenseListContext(parentContext, shallowContext) {\n return parentContext & SubtreeSuspenseContextMask | shallowContext;\n}\nfunction pushSuspenseListContext(fiber, newContext) {\n push(suspenseStackCursor, newContext);\n}\nfunction popSuspenseListContext(fiber) {\n pop(suspenseStackCursor);\n}\n\n// A non-null SuspenseState means that it is blocked for one reason or another.\n// - A non-null dehydrated field means it's blocked pending hydration.\n// - A non-null dehydrated field can use isSuspenseInstancePending or\n// isSuspenseInstanceFallback to query the reason for being dehydrated.\n// - A null dehydrated field means it's blocked by something suspending and\n// we're currently showing a fallback instead.\n\nfunction findFirstSuspended(row) {\n let node = row;\n\n while (node !== null) {\n if (node.tag === SuspenseComponent) {\n const state = node.memoizedState;\n\n if (state !== null) {\n const dehydrated = state.dehydrated;\n\n if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n return node;\n }\n }\n } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n // keep track of whether it suspended or not.\n node.memoizedProps.revealOrder !== undefined) {\n const didSuspend = (node.flags & DidCapture) !== NoFlags$1;\n\n if (didSuspend) {\n return node;\n }\n } else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === row) {\n return null;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === row) {\n return null;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n\n return null;\n}\n\nconst NoFlags =\n/* */\n0b0000; // Represents whether effect should fire.\n\nconst HasEffect =\n/* */\n0b0001; // Represents the phase in which the effect (not the clean-up) fires.\n\nconst Insertion =\n/* */\n0b0010;\nconst Layout =\n/* */\n0b0100;\nconst Passive =\n/* */\n0b1000;\n\nconst ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig;\n// lifetime of an effect. In Rust terms, a RefCell. We use it to store the\n// \"destroy\" function that is returned from an effect, because that is stateful.\n// The field is `undefined` if the effect is unmounted, or if the effect ran\n// but is not stateful. We don't explicitly track whether the effect is mounted\n// or unmounted because that can be inferred by the hiddenness of the fiber in\n// the tree, i.e. whether there is a hidden Offscreen fiber above it.\n//\n// It's unfortunate that this is stored on a separate object, because it adds\n// more memory per effect instance, but it's conceptually sound. I think there's\n// likely a better data structure we could use for effects; perhaps just one\n// array of effect instances per fiber. But I think this is OK for now despite\n// the additional memory and we can follow up with performance\n// optimizations later.\n// These are set right before calling the component.\n\n\nlet renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from\n// the work-in-progress hook.\n\nlet currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The\n// current hook list is the list that belongs to the current fiber. The\n// work-in-progress hook list is a new list that will be added to the\n// work-in-progress fiber.\n\nlet currentHook = null;\nlet workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This\n// does not get reset if we do another render pass; only when we're completely\n// finished evaluating this component. This is an optimization so we know\n// whether we need to clear render phase updates after a throw.\n\nlet didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This\n// gets reset after each attempt.\n// TODO: Maybe there's some way to consolidate this with\n// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.\n\nlet didScheduleRenderPhaseUpdateDuringThisPass = false;\nlet shouldDoubleInvokeUserFnsInHooksDEV = false; // Counts the number of useId hooks in this component.\n\nlet localIdCounter = 0; // Counts number of `use`-d thenables\n\nlet thenableIndexCounter = 0;\nlet thenableState = null; // Used for ids that are generated completely client-side (i.e. not during\n// hydration). This counter is global, so client ids are not stable across\n// render attempts.\n\nlet globalClientIdCounter = 0;\nconst RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook\n\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n\n if (prevDeps === null) {\n\n return false;\n }\n\n\n for (let i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n if (objectIs(nextDeps[i], prevDeps[i])) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber$1 = workInProgress;\n\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = NoLanes; // The following should have already been reset\n // currentHook = null;\n // workInProgressHook = null;\n // didScheduleRenderPhaseUpdate = false;\n // localIdCounter = 0;\n // thenableIndexCounter = 0;\n // thenableState = null;\n // TODO Warn if no hooks are used at all during mount, then some are used during update.\n // Currently we will identify the update render as a mount because memoizedState === null.\n // This is tricky because it's valid for certain types of components (e.g. React.lazy)\n // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.\n // Non-stateful hooks (e.g. context) don't get added to memoizedState,\n // so memoizedState would be null during updates and mounts.\n\n {\n ReactCurrentDispatcher$1.current = current === null || current.memoizedState === null ? HooksDispatcherOnMount : HooksDispatcherOnUpdate;\n } // In Strict Mode, during development, user functions are double invoked to\n // help detect side effects. The logic for how this is implemented for in\n // hook components is a bit complex so let's break it down.\n //\n // We will invoke the entire component function twice. However, during the\n // second invocation of the component, the hook state from the first\n // invocation will be reused. That means things like `useMemo` functions won't\n // run again, because the deps will match and the memoized result will\n // be reused.\n //\n // We want memoized functions to run twice, too, so account for this, user\n // functions are double invoked during the *first* invocation of the component\n // function, and are *not* double invoked during the second incovation:\n //\n // - First execution of component function: user functions are double invoked\n // - Second execution of component function (in Strict Mode, during\n // development): user functions are not double invoked.\n //\n // This is intentional for a few reasons; most importantly, it's because of\n // how `use` works when something suspends: it reuses the promise that was\n // passed during the first attempt. This is itself a form of memoization.\n // We need to be able to memoize the reactive inputs to the `use` call using\n // a hook (i.e. `useMemo`), which means, the reactive inputs to `use` must\n // come from the same component invocation as the output.\n //\n // There are plenty of tests to ensure this behavior is correct.\n\n\n const shouldDoubleRenderDEV = false ;\n shouldDoubleInvokeUserFnsInHooksDEV = shouldDoubleRenderDEV;\n let children = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = false; // Check if there was a render phase update\n\n if (didScheduleRenderPhaseUpdateDuringThisPass) {\n // Keep rendering until the component stabilizes (there are no more render\n // phase updates).\n children = renderWithHooksAgain(workInProgress, Component, props, secondArg);\n }\n\n finishRenderingHooks();\n return children;\n}\n\nfunction finishRenderingHooks(current, workInProgress, Component) {\n // at the beginning of the render phase and there's no re-entrance.\n\n\n ReactCurrentDispatcher$1.current = ContextOnlyDispatcher; // This check uses currentHook so that it works the same in DEV and prod bundles.\n // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.\n\n const didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n renderLanes = NoLanes;\n currentlyRenderingFiber$1 = null;\n currentHook = null;\n workInProgressHook = null;\n\n didScheduleRenderPhaseUpdate = false; // This is reset by checkDidRenderIdHook\n // localIdCounter = 0;\n\n thenableIndexCounter = 0;\n thenableState = null;\n\n if (didRenderTooFewHooks) {\n throw Error(formatProdErrorMessage(300));\n }\n}\n\nfunction replaySuspendedComponentWithHooks(current, workInProgress, Component, props, secondArg) {\n\n const children = renderWithHooksAgain(workInProgress, Component, props, secondArg);\n finishRenderingHooks();\n return children;\n}\n\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n // This is used to perform another render pass. It's used when setState is\n // called during render, and for double invoking components in Strict Mode\n // during development.\n //\n // The state from the previous pass is reused whenever possible. So, state\n // updates that were already processed are not processed again, and memoized\n // functions (`useMemo`) are not invoked again.\n //\n // Keep rendering in a loop for as long as render phase updates continue to\n // be scheduled. Use a counter to prevent infinite loops.\n currentlyRenderingFiber$1 = workInProgress;\n let numberOfReRenders = 0;\n let children;\n\n do {\n if (didScheduleRenderPhaseUpdateDuringThisPass) {\n // It's possible that a use() value depended on a state that was updated in\n // this rerender, so we need to watch for different thenables this time.\n thenableState = null;\n }\n\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = false;\n\n if (numberOfReRenders >= RE_RENDER_LIMIT) {\n throw Error(formatProdErrorMessage(301));\n }\n\n numberOfReRenders += 1;\n\n\n currentHook = null;\n workInProgressHook = null;\n workInProgress.updateQueue = null;\n\n ReactCurrentDispatcher$1.current = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n\n return children;\n}\n\nfunction renderTransitionAwareHostComponentWithHooks(current, workInProgress, lanes) {\n\n return renderWithHooks(current, workInProgress, TransitionAwareHostComponent, null, null, lanes);\n}\nfunction TransitionAwareHostComponent() {\n\n const dispatcher = ReactCurrentDispatcher$1.current;\n\n const _dispatcher$useState = dispatcher.useState(),\n maybeThenable = _dispatcher$useState[0];\n\n if (typeof maybeThenable.then === 'function') {\n const thenable = maybeThenable;\n return useThenable(thenable);\n } else {\n const status = maybeThenable;\n return status;\n }\n}\nfunction checkDidRenderIdHook() {\n // This should be called immediately after every renderWithHooks call.\n // Conceptually, it's part of the return value of renderWithHooks; it's only a\n // separate function to avoid using an array tuple.\n const didRenderIdHook = localIdCounter !== 0;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue; // TODO: Don't need to reset the flags here, because they're reset in the\n // complete phase (bubbleProperties).\n\n {\n workInProgress.flags &= ~(Passive$1 | Update);\n }\n\n current.lanes = removeLanes(current.lanes, lanes);\n}\nfunction resetHooksAfterThrow() {\n // This is called immediaetly after a throw. It shouldn't reset the entire\n // module state, because the work loop might decide to replay the component\n // again without rewinding.\n //\n // It should only reset things like the current dispatcher, to prevent hooks\n // from being called outside of a component.\n currentlyRenderingFiber$1 = null; // We can assume the previous dispatcher is always this one, since we set it\n // at the beginning of the render phase and there's no re-entrance.\n\n ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n // There were render phase updates. These are only valid for this render\n // phase, which we are now aborting. Remove the updates from the queues so\n // they do not persist to the next render. Do not remove updates from hooks\n // that weren't processed.\n //\n // Only reset the updates from the queue if it has a clone. If it does\n // not have a clone, that means it wasn't processed, and the updates were\n // scheduled before we entered the render phase.\n let hook = workInProgress.memoizedState;\n\n while (hook !== null) {\n const queue = hook.queue;\n\n if (queue !== null) {\n queue.pending = null;\n }\n\n hook = hook.next;\n }\n\n didScheduleRenderPhaseUpdate = false;\n }\n\n renderLanes = NoLanes;\n currentlyRenderingFiber$1 = null;\n currentHook = null;\n workInProgressHook = null;\n\n didScheduleRenderPhaseUpdateDuringThisPass = false;\n localIdCounter = 0;\n thenableIndexCounter = 0;\n thenableState = null;\n}\n\nfunction mountWorkInProgressHook() {\n const hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n\n if (workInProgressHook === null) {\n // This is the first hook in the list\n currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n } else {\n // Append to the end of the list\n workInProgressHook = workInProgressHook.next = hook;\n }\n\n return workInProgressHook;\n}\n\nfunction updateWorkInProgressHook() {\n // This function is used both for updates and for re-renders triggered by a\n // render phase update. It assumes there is either a current hook we can\n // clone, or a work-in-progress hook from a previous render pass that we can\n // use as a base.\n let nextCurrentHook;\n\n if (currentHook === null) {\n const current = currentlyRenderingFiber$1.alternate;\n\n if (current !== null) {\n nextCurrentHook = current.memoizedState;\n } else {\n nextCurrentHook = null;\n }\n } else {\n nextCurrentHook = currentHook.next;\n }\n\n let nextWorkInProgressHook;\n\n if (workInProgressHook === null) {\n nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n } else {\n nextWorkInProgressHook = workInProgressHook.next;\n }\n\n if (nextWorkInProgressHook !== null) {\n // There's already a work-in-progress. Reuse it.\n workInProgressHook = nextWorkInProgressHook;\n nextWorkInProgressHook = workInProgressHook.next;\n currentHook = nextCurrentHook;\n } else {\n // Clone from the current hook.\n if (nextCurrentHook === null) {\n const currentFiber = currentlyRenderingFiber$1.alternate;\n\n if (currentFiber === null) {\n // This is the initial render. This branch is reached when the component\n // suspends, resumes, then renders an additional hook.\n // Should never be reached because we should switch to the mount dispatcher first.\n throw Error(formatProdErrorMessage(467));\n } else {\n // This is an update. We should always have a current hook.\n throw Error(formatProdErrorMessage(310));\n }\n }\n\n currentHook = nextCurrentHook;\n const newHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n\n if (workInProgressHook === null) {\n // This is the first hook in the list.\n currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n } else {\n // Append to the end of the list.\n workInProgressHook = workInProgressHook.next = newHook;\n }\n }\n\n return workInProgressHook;\n} // NOTE: defining two versions of this function to avoid size impact when this feature is disabled.\n// Previously this function was inlined, the additional `memoCache` property makes it not inlined.\n\n\nlet createFunctionComponentUpdateQueue;\n\n{\n createFunctionComponentUpdateQueue = () => {\n return {\n lastEffect: null,\n events: null,\n stores: null\n };\n };\n}\n\nfunction useThenable(thenable) {\n // Track the position of the thenable within this fiber.\n const index = thenableIndexCounter;\n thenableIndexCounter += 1;\n\n if (thenableState === null) {\n thenableState = createThenableState();\n }\n\n const result = trackUsedThenable(thenableState, thenable, index);\n\n if (currentlyRenderingFiber$1.alternate === null && (workInProgressHook === null ? currentlyRenderingFiber$1.memoizedState === null : workInProgressHook.next === null)) {\n // Initial render, and either this is the first time the component is\n // called, or there were no Hooks called after this use() the previous\n // time (perhaps because it threw). Subsequent Hook calls should use the\n // mount dispatcher.\n {\n ReactCurrentDispatcher$1.current = HooksDispatcherOnMount;\n }\n }\n\n return result;\n}\n\nfunction use(usable) {\n if (usable !== null && typeof usable === 'object') {\n // $FlowFixMe[method-unbinding]\n if (typeof usable.then === 'function') {\n // This is a thenable.\n const thenable = usable;\n return useThenable(thenable);\n } else if (usable.$$typeof === REACT_CONTEXT_TYPE) {\n const context = usable;\n return readContext(context);\n }\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\n\nfunction basicStateReducer(state, action) {\n // $FlowFixMe[incompatible-use]: Flow doesn't like mixed types\n return typeof action === 'function' ? action(state) : action;\n}\n\nfunction mountReducer(reducer, initialArg, init) {\n const hook = mountWorkInProgressHook();\n let initialState;\n\n if (init !== undefined) {\n initialState = init(initialArg);\n\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(true);\n init(initialArg);\n setIsStrictModeForDevtools(false);\n }\n } else {\n initialState = initialArg;\n }\n\n hook.memoizedState = hook.baseState = initialState;\n const queue = {\n pending: null,\n lanes: NoLanes,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = queue;\n const dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n return [hook.memoizedState, dispatch];\n}\n\nfunction updateReducer(reducer, initialArg, init) {\n const hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\n\nfunction updateReducerImpl(hook, current, reducer) {\n const queue = hook.queue;\n\n if (queue === null) {\n throw Error(formatProdErrorMessage(311));\n }\n\n queue.lastRenderedReducer = reducer; // The last rebase update that is NOT part of the base state.\n\n let baseQueue = hook.baseQueue; // The last pending update that hasn't been processed yet.\n\n const pendingQueue = queue.pending;\n\n if (pendingQueue !== null) {\n // We have new updates that haven't been processed yet.\n // We'll add them to the base queue.\n if (baseQueue !== null) {\n // Merge the pending queue and the base queue.\n const baseFirst = baseQueue.next;\n const pendingFirst = pendingQueue.next;\n baseQueue.next = pendingFirst;\n pendingQueue.next = baseFirst;\n }\n\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n\n const baseState = hook.baseState;\n\n if (baseQueue === null) {\n // If there are no pending updates, then the memoized state should be the\n // same as the base state. Currently these only diverge in the case of\n // useOptimistic, because useOptimistic accepts a new baseState on\n // every render.\n hook.memoizedState = baseState; // We don't need to call markWorkInProgressReceivedUpdate because\n // baseState is derived from other reactive values.\n } else {\n // We have a queue to process.\n const first = baseQueue.next;\n let newState = baseState;\n let newBaseState = null;\n let newBaseQueueFirst = null;\n let newBaseQueueLast = null;\n let update = first;\n let didReadFromEntangledAsyncAction = false;\n\n do {\n // An extra OffscreenLane bit is added to updates that were made to\n // a hidden tree, so that we can distinguish them from updates that were\n // already there when the tree was hidden.\n const updateLane = removeLanes(update.lane, OffscreenLane);\n const isHiddenUpdate = updateLane !== update.lane; // Check if this update was made while the tree was hidden. If so, then\n // it's not a \"base\" update and we should disregard the extra base lanes\n // that were added to renderLanes when we entered the Offscreen tree.\n\n const shouldSkipUpdate = isHiddenUpdate ? !isSubsetOfLanes(getWorkInProgressRootRenderLanes(), updateLane) : !isSubsetOfLanes(renderLanes, updateLane);\n\n if (shouldSkipUpdate) {\n // Priority is insufficient. Skip this update. If this is the first\n // skipped update, the previous update/state is the new base\n // update/state.\n const clone = {\n lane: updateLane,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n };\n\n if (newBaseQueueLast === null) {\n newBaseQueueFirst = newBaseQueueLast = clone;\n newBaseState = newState;\n } else {\n newBaseQueueLast = newBaseQueueLast.next = clone;\n } // Update the remaining priority in the queue.\n // TODO: Don't need to accumulate this. Instead, we can remove\n // renderLanes from the original lanes.\n\n\n currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n markSkippedUpdateLanes(updateLane);\n } else {\n // This update does have sufficient priority.\n // Check if this is an optimistic update.\n const revertLane = update.revertLane;\n\n if (revertLane === NoLane) {\n // This is not an optimistic update, and we're going to apply it now.\n // But, if there were earlier updates that were skipped, we need to\n // leave this update in the queue so it can be rebased later.\n if (newBaseQueueLast !== null) {\n const clone = {\n // This update is going to be committed so we never want uncommit\n // it. Using NoLane works because 0 is a subset of all bitmasks, so\n // this will never be skipped by the check above.\n lane: NoLane,\n revertLane: NoLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n };\n newBaseQueueLast = newBaseQueueLast.next = clone;\n } // Check if this update is part of a pending async action. If so,\n // we'll need to suspend until the action has finished, so that it's\n // batched together with future updates in the same action.\n\n\n if (updateLane === peekEntangledActionLane()) {\n didReadFromEntangledAsyncAction = true;\n }\n } else {\n // This is an optimistic update. If the \"revert\" priority is\n // sufficient, don't apply the update. Otherwise, apply the update,\n // but leave it in the queue so it can be either reverted or\n // rebased in a subsequent render.\n if (isSubsetOfLanes(renderLanes, revertLane)) {\n // The transition that this optimistic update is associated with\n // has finished. Pretend the update doesn't exist by skipping\n // over it.\n update = update.next; // Check if this update is part of a pending async action. If so,\n // we'll need to suspend until the action has finished, so that it's\n // batched together with future updates in the same action.\n\n if (revertLane === peekEntangledActionLane()) {\n didReadFromEntangledAsyncAction = true;\n }\n\n continue;\n } else {\n const clone = {\n // Once we commit an optimistic update, we shouldn't uncommit it\n // until the transition it is associated with has finished\n // (represented by revertLane). Using NoLane here works because 0\n // is a subset of all bitmasks, so this will never be skipped by\n // the check above.\n lane: NoLane,\n // Reuse the same revertLane so we know when the transition\n // has finished.\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n };\n\n if (newBaseQueueLast === null) {\n newBaseQueueFirst = newBaseQueueLast = clone;\n newBaseState = newState;\n } else {\n newBaseQueueLast = newBaseQueueLast.next = clone;\n } // Update the remaining priority in the queue.\n // TODO: Don't need to accumulate this. Instead, we can remove\n // renderLanes from the original lanes.\n\n\n currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, revertLane);\n markSkippedUpdateLanes(revertLane);\n }\n } // Process this update.\n\n\n const action = update.action;\n\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n reducer(newState, action);\n }\n\n if (update.hasEagerState) {\n // If this update is a state update (not a reducer) and was processed eagerly,\n // we can use the eagerly computed state\n newState = update.eagerState;\n } else {\n newState = reducer(newState, action);\n }\n }\n\n update = update.next;\n } while (update !== null && update !== first);\n\n if (newBaseQueueLast === null) {\n newBaseState = newState;\n } else {\n newBaseQueueLast.next = newBaseQueueFirst;\n } // Mark that the fiber performed work, but only if the new state is\n // different from the current state.\n\n\n if (!objectIs(newState, hook.memoizedState)) {\n markWorkInProgressReceivedUpdate(); // Check if this update is part of a pending async action. If so, we'll\n // need to suspend until the action has finished, so that it's batched\n // together with future updates in the same action.\n // TODO: Once we support hooks inside useMemo (or an equivalent\n // memoization boundary like Forget), hoist this logic so that it only\n // suspends if the memo boundary produces a new value.\n\n if (didReadFromEntangledAsyncAction) {\n const entangledActionThenable = peekEntangledActionThenable();\n\n if (entangledActionThenable !== null) {\n // TODO: Instead of the throwing the thenable directly, throw a\n // special object like `use` does so we can detect if it's captured\n // by userspace.\n throw entangledActionThenable;\n }\n }\n }\n\n hook.memoizedState = newState;\n hook.baseState = newBaseState;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = newState;\n }\n\n if (baseQueue === null) {\n // `queue.lanes` is used for entangling transitions. We can set it back to\n // zero once the queue is empty.\n queue.lanes = NoLanes;\n }\n\n const dispatch = queue.dispatch;\n return [hook.memoizedState, dispatch];\n}\n\nfunction rerenderReducer(reducer, initialArg, init) {\n const hook = updateWorkInProgressHook();\n const queue = hook.queue;\n\n if (queue === null) {\n throw Error(formatProdErrorMessage(311));\n }\n\n queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous\n // work-in-progress hook.\n\n const dispatch = queue.dispatch;\n const lastRenderPhaseUpdate = queue.pending;\n let newState = hook.memoizedState;\n\n if (lastRenderPhaseUpdate !== null) {\n // The queue doesn't persist past this render pass.\n queue.pending = null;\n const firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n let update = firstRenderPhaseUpdate;\n\n do {\n // Process this render phase update. We don't have to check the\n // priority because it will always be the same as the current\n // render's.\n const action = update.action;\n newState = reducer(newState, action);\n update = update.next;\n } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is\n // different from the current state.\n\n\n if (!objectIs(newState, hook.memoizedState)) {\n markWorkInProgressReceivedUpdate();\n }\n\n hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to\n // the base state unless the queue is empty.\n // TODO: Not sure if this is the desired semantics, but it's what we\n // do for gDSFP. I can't remember why.\n\n if (hook.baseQueue === null) {\n hook.baseState = newState;\n }\n\n queue.lastRenderedState = newState;\n }\n\n return [newState, dispatch];\n}\n\nfunction mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n const fiber = currentlyRenderingFiber$1;\n const hook = mountWorkInProgressHook();\n let nextSnapshot;\n const isHydrating = getIsHydrating();\n\n if (isHydrating) {\n if (getServerSnapshot === undefined) {\n throw Error(formatProdErrorMessage(407));\n }\n\n nextSnapshot = getServerSnapshot();\n } else {\n nextSnapshot = getSnapshot();\n // Right before committing, we will walk the tree and check if any of the\n // stores were mutated.\n //\n // We won't do this if we're hydrating server-rendered content, because if\n // the content is stale, it's already visible anyway. Instead we'll patch\n // it up in a passive effect.\n\n\n const root = getWorkInProgressRoot();\n\n if (root === null) {\n throw Error(formatProdErrorMessage(349));\n }\n\n const rootRenderLanes = getWorkInProgressRootRenderLanes();\n\n if (!includesBlockingLane(root, rootRenderLanes)) {\n pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n }\n } // Read the current snapshot from the store on every render. This breaks the\n // normal rules of React, and only works because store updates are\n // always synchronous.\n\n\n hook.memoizedState = nextSnapshot;\n const inst = {\n value: nextSnapshot,\n getSnapshot\n };\n hook.queue = inst; // Schedule an effect to subscribe to the store.\n\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Schedule an effect to update the mutable instance fields. We will update\n // this whenever subscribe, getSnapshot, or value changes. Because there's no\n // clean-up function, and we track the deps correctly, we can call pushEffect\n // directly, without storing any additional state. For the same reason, we\n // don't need to set a static flag, either.\n\n fiber.flags |= Passive$1;\n pushEffect(HasEffect | Passive, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), createEffectInstance(), null);\n return nextSnapshot;\n}\n\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n const fiber = currentlyRenderingFiber$1;\n const hook = updateWorkInProgressHook(); // Read the current snapshot from the store on every render. This breaks the\n // normal rules of React, and only works because store updates are\n // always synchronous.\n\n let nextSnapshot;\n const isHydrating = getIsHydrating();\n\n if (isHydrating) {\n // Needed for strict mode double render\n if (getServerSnapshot === undefined) {\n throw Error(formatProdErrorMessage(407));\n }\n\n nextSnapshot = getServerSnapshot();\n } else {\n nextSnapshot = getSnapshot();\n }\n\n const prevSnapshot = (currentHook || hook).memoizedState;\n const snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n\n if (snapshotChanged) {\n hook.memoizedState = nextSnapshot;\n markWorkInProgressReceivedUpdate();\n }\n\n const inst = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the subscribe function changed. We can save some memory by\n // checking whether we scheduled a subscription effect above.\n workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n fiber.flags |= Passive$1;\n pushEffect(HasEffect | Passive, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), createEffectInstance(), null); // Unless we're rendering a blocking lane, schedule a consistency check.\n // Right before committing, we will walk the tree and check if any of the\n // stores were mutated.\n\n const root = getWorkInProgressRoot();\n\n if (root === null) {\n throw Error(formatProdErrorMessage(349));\n }\n\n if (!isHydrating && !includesBlockingLane(root, renderLanes)) {\n pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n }\n }\n\n return nextSnapshot;\n}\n\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= StoreConsistency;\n const check = {\n getSnapshot,\n value: renderedSnapshot\n };\n let componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n if (componentUpdateQueue === null) {\n componentUpdateQueue = createFunctionComponentUpdateQueue();\n currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n componentUpdateQueue.stores = [check];\n } else {\n const stores = componentUpdateQueue.stores;\n\n if (stores === null) {\n componentUpdateQueue.stores = [check];\n } else {\n stores.push(check);\n }\n }\n}\n\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n // These are updated in the passive phase\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot; // Something may have been mutated in between render and commit. This could\n // have been in an event that fired before the passive effects, or it could\n // have been in a layout effect. In that case, we would have used the old\n // snapsho and getSnapshot values to bail out. We need to check one more time.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceStoreRerender(fiber);\n }\n}\n\nfunction subscribeToStore(fiber, inst, subscribe) {\n const handleStoreChange = () => {\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceStoreRerender(fiber);\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n}\n\nfunction checkIfSnapshotChanged(inst) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n\n try {\n const nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction forceStoreRerender(fiber) {\n const root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, SyncLane);\n }\n}\n\nfunction mountStateImpl(initialState) {\n const hook = mountWorkInProgressHook();\n\n if (typeof initialState === 'function') {\n const initialStateInitializer = initialState; // $FlowFixMe[incompatible-use]: Flow doesn't like mixed types\n\n initialState = initialStateInitializer();\n\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(true); // $FlowFixMe[incompatible-use]: Flow doesn't like mixed types\n\n initialStateInitializer();\n setIsStrictModeForDevtools(false);\n }\n }\n\n hook.memoizedState = hook.baseState = initialState;\n const queue = {\n pending: null,\n lanes: NoLanes,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n hook.queue = queue;\n return hook;\n}\n\nfunction mountState(initialState) {\n const hook = mountStateImpl(initialState);\n const queue = hook.queue;\n const dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n queue.dispatch = dispatch;\n return [hook.memoizedState, dispatch];\n}\n\nfunction updateState(initialState) {\n return updateReducer(basicStateReducer);\n}\n\nfunction rerenderState(initialState) {\n return rerenderReducer(basicStateReducer);\n}\n\nfunction mountOptimistic(passthrough, reducer) {\n const hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n const queue = {\n pending: null,\n lanes: NoLanes,\n dispatch: null,\n // Optimistic state does not use the eager update optimization.\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue; // This is different than the normal setState function.\n\n const dispatch = dispatchOptimisticSetState.bind(null, currentlyRenderingFiber$1, true, queue);\n queue.dispatch = dispatch;\n return [passthrough, dispatch];\n}\n\nfunction updateOptimistic(passthrough, reducer) {\n const hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n}\n\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n // Optimistic updates are always rebased on top of the latest value passed in\n // as an argument. It's called a passthrough because if there are no pending\n // updates, it will be returned as-is.\n //\n // Reset the base state to the passthrough. Future updates will be applied\n // on top of this.\n hook.baseState = passthrough; // If a reducer is not provided, default to the same one used by useState.\n\n const resolvedReducer = typeof reducer === 'function' ? reducer : basicStateReducer;\n return updateReducerImpl(hook, currentHook, resolvedReducer);\n}\n\nfunction rerenderOptimistic(passthrough, reducer) {\n // Unlike useState, useOptimistic doesn't support render phase updates.\n // Also unlike useState, we need to replay all pending updates again in case\n // the passthrough value changed.\n //\n // So instead of a forked re-render implementation that knows how to handle\n // render phase udpates, we can use the same implementation as during a\n // regular mount or update.\n const hook = updateWorkInProgressHook();\n\n if (currentHook !== null) {\n // This is an update. Process the update queue.\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n } // This is a mount. No updates to process.\n // Reset the base state to the passthrough. Future updates will be applied\n // on top of this.\n\n\n hook.baseState = passthrough;\n const dispatch = hook.queue.dispatch;\n return [passthrough, dispatch];\n} // useFormState actions run sequentially, because each action receives the\n// previous state as an argument. We store pending actions on a queue.\n\n\nfunction dispatchFormState(fiber, actionQueue, setState, payload) {\n if (isRenderPhaseUpdate(fiber)) {\n throw Error(formatProdErrorMessage(485));\n }\n\n const last = actionQueue.pending;\n\n if (last === null) {\n // There are no pending actions; this is the first one. We can run\n // it immediately.\n const newLast = {\n payload,\n next: null // circular\n\n };\n newLast.next = actionQueue.pending = newLast;\n runFormStateAction(actionQueue, setState, payload);\n } else {\n // There's already an action running. Add to the queue.\n const first = last.next;\n const newLast = {\n payload,\n next: first\n };\n actionQueue.pending = last.next = newLast;\n }\n}\n\nfunction runFormStateAction(actionQueue, setState, payload) {\n const action = actionQueue.action;\n const prevState = actionQueue.state; // This is a fork of startTransition\n\n const prevTransition = ReactCurrentBatchConfig$3.transition;\n const currentTransition = {\n _callbacks: new Set()\n };\n ReactCurrentBatchConfig$3.transition = currentTransition;\n\n try {\n const returnValue = action(prevState, payload);\n\n if (returnValue !== null && typeof returnValue === 'object' && // $FlowFixMe[method-unbinding]\n typeof returnValue.then === 'function') {\n const thenable = returnValue;\n notifyTransitionCallbacks(currentTransition, thenable); // Attach a listener to read the return state of the action. As soon as\n // this resolves, we can run the next action in the sequence.\n\n thenable.then(nextState => {\n actionQueue.state = nextState;\n finishRunningFormStateAction(actionQueue, setState);\n }, () => finishRunningFormStateAction(actionQueue, setState));\n setState(thenable);\n } else {\n setState(returnValue);\n const nextState = returnValue;\n actionQueue.state = nextState;\n finishRunningFormStateAction(actionQueue, setState);\n }\n } catch (error) {\n // This is a trick to get the `useFormState` hook to rethrow the error.\n // When it unwraps the thenable with the `use` algorithm, the error\n // will be thrown.\n const rejectedThenable = {\n then() {},\n\n status: 'rejected',\n reason: error // $FlowFixMe: Not sure why this doesn't work\n\n };\n setState(rejectedThenable);\n finishRunningFormStateAction(actionQueue, setState);\n } finally {\n ReactCurrentBatchConfig$3.transition = prevTransition;\n }\n}\n\nfunction finishRunningFormStateAction(actionQueue, setState) {\n // The action finished running. Pop it from the queue and run the next pending\n // action, if there are any.\n const last = actionQueue.pending;\n\n if (last !== null) {\n const first = last.next;\n\n if (first === last) {\n // This was the last action in the queue.\n actionQueue.pending = null;\n } else {\n // Remove the first node from the circular queue.\n const next = first.next;\n last.next = next; // Run the next action.\n\n runFormStateAction(actionQueue, setState, next.payload);\n }\n }\n}\n\nfunction formStateReducer(oldState, newState) {\n return newState;\n}\n\nfunction mountFormState(action, initialStateProp, permalink) {\n let initialState = initialStateProp;\n\n if (getIsHydrating()) {\n const root = getWorkInProgressRoot();\n const ssrFormState = root.formState; // If a formState option was passed to the root, there are form state\n // markers that we need to hydrate. These indicate whether the form state\n // matches this hook instance.\n\n if (ssrFormState !== null) {\n const isMatching = tryToClaimNextHydratableFormMarkerInstance();\n\n if (isMatching) {\n initialState = ssrFormState[0];\n }\n }\n } // State hook. The state is stored in a thenable which is then unwrapped by\n // the `use` algorithm during render.\n\n\n const stateHook = mountWorkInProgressHook();\n stateHook.memoizedState = stateHook.baseState = initialState; // TODO: Typing this \"correctly\" results in recursion limit errors\n // const stateQueue: UpdateQueue<S | Awaited<S>, S | Awaited<S>> = {\n\n const stateQueue = {\n pending: null,\n lanes: NoLanes,\n dispatch: null,\n lastRenderedReducer: formStateReducer,\n lastRenderedState: initialState\n };\n stateHook.queue = stateQueue;\n const setState = dispatchSetState.bind(null, currentlyRenderingFiber$1, stateQueue);\n stateQueue.dispatch = setState; // Action queue hook. This is used to queue pending actions. The queue is\n // shared between all instances of the hook. Similar to a regular state queue,\n // but different because the actions are run sequentially, and they run in\n // an event instead of during render.\n\n const actionQueueHook = mountWorkInProgressHook();\n const actionQueue = {\n state: initialState,\n dispatch: null,\n // circular\n action,\n pending: null\n };\n actionQueueHook.queue = actionQueue;\n const dispatch = dispatchFormState.bind(null, currentlyRenderingFiber$1, actionQueue, setState);\n actionQueue.dispatch = dispatch; // Stash the action function on the memoized state of the hook. We'll use this\n // to detect when the action function changes so we can update it in\n // an effect.\n\n actionQueueHook.memoizedState = action;\n return [initialState, dispatch];\n}\n\nfunction updateFormState(action, initialState, permalink) {\n const stateHook = updateWorkInProgressHook();\n const currentStateHook = currentHook;\n return updateFormStateImpl(stateHook, currentStateHook, action);\n}\n\nfunction updateFormStateImpl(stateHook, currentStateHook, action, initialState, permalink) {\n const _updateReducerImpl = updateReducerImpl(stateHook, currentStateHook, formStateReducer),\n actionResult = _updateReducerImpl[0]; // This will suspend until the action finishes.\n\n\n const state = typeof actionResult === 'object' && actionResult !== null && // $FlowFixMe[method-unbinding]\n typeof actionResult.then === 'function' ? useThenable(actionResult) : actionResult;\n const actionQueueHook = updateWorkInProgressHook();\n const actionQueue = actionQueueHook.queue;\n const dispatch = actionQueue.dispatch; // Check if a new action was passed. If so, update it in an effect.\n\n const prevAction = actionQueueHook.memoizedState;\n\n if (action !== prevAction) {\n currentlyRenderingFiber$1.flags |= Passive$1;\n pushEffect(HasEffect | Passive, formStateActionEffect.bind(null, actionQueue, action), createEffectInstance(), null);\n }\n\n return [state, dispatch];\n}\n\nfunction formStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\n\nfunction rerenderFormState(action, initialState, permalink) {\n // Unlike useState, useFormState doesn't support render phase updates.\n // Also unlike useState, we need to replay all pending updates again in case\n // the passthrough value changed.\n //\n // So instead of a forked re-render implementation that knows how to handle\n // render phase udpates, we can use the same implementation as during a\n // regular mount or update.\n const stateHook = updateWorkInProgressHook();\n const currentStateHook = currentHook;\n\n if (currentStateHook !== null) {\n // This is an update. Process the update queue.\n return updateFormStateImpl(stateHook, currentStateHook, action);\n } // This is a mount. No updates to process.\n\n\n const state = stateHook.memoizedState;\n const actionQueueHook = updateWorkInProgressHook();\n const actionQueue = actionQueueHook.queue;\n const dispatch = actionQueue.dispatch; // This may have changed during the rerender.\n\n actionQueueHook.memoizedState = action;\n return [state, dispatch];\n}\n\nfunction pushEffect(tag, create, inst, deps) {\n const effect = {\n tag,\n create,\n inst,\n deps,\n // Circular\n next: null\n };\n let componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n if (componentUpdateQueue === null) {\n componentUpdateQueue = createFunctionComponentUpdateQueue();\n currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n componentUpdateQueue.lastEffect = effect.next = effect;\n } else {\n const lastEffect = componentUpdateQueue.lastEffect;\n\n if (lastEffect === null) {\n componentUpdateQueue.lastEffect = effect.next = effect;\n } else {\n const firstEffect = lastEffect.next;\n lastEffect.next = effect;\n effect.next = firstEffect;\n componentUpdateQueue.lastEffect = effect;\n }\n }\n\n return effect;\n}\n\nfunction createEffectInstance() {\n return {\n destroy: undefined\n };\n}\n\nfunction mountRef(initialValue) {\n const hook = mountWorkInProgressHook();\n\n {\n const ref = {\n current: initialValue\n };\n hook.memoizedState = ref;\n return ref;\n }\n}\n\nfunction updateRef(initialValue) {\n const hook = updateWorkInProgressHook();\n return hook.memoizedState;\n}\n\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n const hook = mountWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n currentlyRenderingFiber$1.flags |= fiberFlags;\n hook.memoizedState = pushEffect(HasEffect | hookFlags, create, createEffectInstance(), nextDeps);\n}\n\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n const hook = updateWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n const effect = hook.memoizedState;\n const inst = effect.inst; // currentHook is null on initial mount when rerendering after a render phase\n // state update or for strict mode.\n\n if (currentHook !== null) {\n if (nextDeps !== null) {\n const prevEffect = currentHook.memoizedState;\n const prevDeps = prevEffect.deps;\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n hook.memoizedState = pushEffect(hookFlags, create, inst, nextDeps);\n return;\n }\n }\n }\n\n currentlyRenderingFiber$1.flags |= fiberFlags;\n hook.memoizedState = pushEffect(HasEffect | hookFlags, create, inst, nextDeps);\n}\n\nfunction mountEffect(create, deps) {\n {\n mountEffectImpl(Passive$1 | PassiveStatic, Passive, create, deps);\n }\n}\n\nfunction updateEffect(create, deps) {\n updateEffectImpl(Passive$1, Passive, create, deps);\n}\n\nfunction mountInsertionEffect(create, deps) {\n mountEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction mountLayoutEffect(create, deps) {\n let fiberFlags = Update | LayoutStatic;\n\n return mountEffectImpl(fiberFlags, Layout, create, deps);\n}\n\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(Update, Layout, create, deps);\n}\n\nfunction imperativeHandleEffect(create, ref) {\n if (typeof ref === 'function') {\n const refCallback = ref;\n const inst = create();\n refCallback(inst);\n return () => {\n refCallback(null);\n };\n } else if (ref !== null && ref !== undefined) {\n const refObject = ref;\n\n const inst = create();\n refObject.current = inst;\n return () => {\n refObject.current = null;\n };\n }\n}\n\nfunction mountImperativeHandle(ref, create, deps) {\n\n\n const effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n let fiberFlags = Update | LayoutStatic;\n\n mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction updateImperativeHandle(ref, create, deps) {\n\n\n const effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction mountDebugValue(value, formatterFn) {// This hook is normally a no-op.\n // The react-debug-hooks package injects its own implementation\n // so that e.g. DevTools can display custom hook values.\n}\n\nconst updateDebugValue = mountDebugValue;\n\nfunction mountCallback(callback, deps) {\n const hook = mountWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n hook.memoizedState = [callback, nextDeps];\n return callback;\n}\n\nfunction updateCallback(callback, deps) {\n const hook = updateWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n const prevState = hook.memoizedState;\n\n if (nextDeps !== null) {\n const prevDeps = prevState[1];\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n return prevState[0];\n }\n }\n\n hook.memoizedState = [callback, nextDeps];\n return callback;\n}\n\nfunction mountMemo(nextCreate, deps) {\n const hook = mountWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n const nextValue = nextCreate();\n\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(true);\n nextCreate();\n setIsStrictModeForDevtools(false);\n }\n\n hook.memoizedState = [nextValue, nextDeps];\n return nextValue;\n}\n\nfunction updateMemo(nextCreate, deps) {\n const hook = updateWorkInProgressHook();\n const nextDeps = deps === undefined ? null : deps;\n const prevState = hook.memoizedState; // Assume these are defined. If they're not, areHookInputsEqual will warn.\n\n if (nextDeps !== null) {\n const prevDeps = prevState[1];\n\n if (areHookInputsEqual(nextDeps, prevDeps)) {\n return prevState[0];\n }\n }\n\n const nextValue = nextCreate();\n\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(true);\n nextCreate();\n setIsStrictModeForDevtools(false);\n }\n\n hook.memoizedState = [nextValue, nextDeps];\n return nextValue;\n}\n\nfunction mountDeferredValue(value, initialValue) {\n const hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value);\n}\n\nfunction updateDeferredValue(value, initialValue) {\n const hook = updateWorkInProgressHook();\n const resolvedCurrentHook = currentHook;\n const prevValue = resolvedCurrentHook.memoizedState;\n return updateDeferredValueImpl(hook, prevValue, value);\n}\n\nfunction rerenderDeferredValue(value, initialValue) {\n const hook = updateWorkInProgressHook();\n\n if (currentHook === null) {\n // This is a rerender during a mount.\n return mountDeferredValueImpl(hook, value);\n } else {\n // This is a rerender during an update.\n const prevValue = currentHook.memoizedState;\n return updateDeferredValueImpl(hook, prevValue, value);\n }\n}\n\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n {\n hook.memoizedState = value;\n return value;\n }\n}\n\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) {\n // The incoming value is referentially identical to the currently rendered\n // value, so we can bail out quickly.\n return value;\n } else {\n // Received a new value that's different from the current value.\n // Check if we're inside a hidden tree\n if (isCurrentTreeHidden()) {\n // Revealing a prerendered tree is considered the same as mounting new\n // one, so we reuse the \"mount\" path in this case.\n const resultValue = mountDeferredValueImpl(hook, value); // Unlike during an actual mount, we need to mark this as an update if\n // the value changed.\n\n if (!objectIs(resultValue, prevValue)) {\n markWorkInProgressReceivedUpdate();\n }\n\n return resultValue;\n }\n\n const shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);\n\n if (shouldDeferValue) {\n // This is an urgent update. Since the value has changed, keep using the\n // previous value and spawn a deferred render to update it later.\n // Schedule a deferred render\n const deferredLane = requestDeferredLane();\n currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);\n markSkippedUpdateLanes(deferredLane); // Reuse the previous value. We do not need to mark this as an update,\n // because we did not render a new value.\n\n return prevValue;\n } else {\n // This is not an urgent update, so we can use the latest value regardless\n // of what it is. No need to defer it.\n // Mark this as an update to prevent the fiber from bailing out.\n markWorkInProgressReceivedUpdate();\n hook.memoizedState = value;\n return value;\n }\n }\n}\n\nfunction startTransition(fiber, queue, pendingState, finishedState, callback, options) {\n const previousPriority = getCurrentUpdatePriority();\n setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n const prevTransition = ReactCurrentBatchConfig$3.transition;\n const currentTransition = {\n _callbacks: new Set()\n };\n\n {\n // We don't really need to use an optimistic update here, because we\n // schedule a second \"revert\" update below (which we use to suspend the\n // transition until the async action scope has finished). But we'll use an\n // optimistic update anyway to make it less likely the behavior accidentally\n // diverges; for example, both an optimistic update and this one should\n // share the same lane.\n ReactCurrentBatchConfig$3.transition = currentTransition;\n dispatchOptimisticSetState(fiber, false, queue, pendingState);\n }\n\n try {\n if (enableAsyncActions) {\n const returnValue = callback(); // Check if we're inside an async action scope. If so, we'll entangle\n // this new action with the existing scope.\n //\n // If we're not already inside an async action scope, and this action is\n // async, then we'll create a new async scope.\n //\n // In the async case, the resulting render will suspend until the async\n // action scope has finished.\n\n if (returnValue !== null && typeof returnValue === 'object' && typeof returnValue.then === 'function') {\n const thenable = returnValue;\n notifyTransitionCallbacks(currentTransition, thenable); // Create a thenable that resolves to `finishedState` once the async\n // action has completed.\n\n const thenableForFinishedState = chainThenableValue(thenable, finishedState);\n dispatchSetState(fiber, queue, thenableForFinishedState);\n } else {\n dispatchSetState(fiber, queue, finishedState);\n }\n }\n } catch (error) {\n {\n // This is a trick to get the `useTransition` hook to rethrow the error.\n // When it unwraps the thenable with the `use` algorithm, the error\n // will be thrown.\n const rejectedThenable = {\n then() {},\n\n status: 'rejected',\n reason: error\n };\n dispatchSetState(fiber, queue, rejectedThenable);\n }\n } finally {\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig$3.transition = prevTransition;\n }\n}\n\nfunction startHostTransition(formFiber, pendingState, callback, formData) {\n\n if (formFiber.tag !== HostComponent) {\n throw Error(formatProdErrorMessage(476));\n }\n\n let queue;\n\n if (formFiber.memoizedState === null) {\n // Upgrade this host component fiber to be stateful. We're going to pretend\n // it was stateful all along so we can reuse most of the implementation\n // for function components and useTransition.\n //\n // Create the state hook used by TransitionAwareHostComponent. This is\n // essentially an inlined version of mountState.\n const newQueue = {\n pending: null,\n lanes: NoLanes,\n // We're going to cheat and intentionally not create a bound dispatch\n // method, because we can call it directly in startTransition.\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: NotPendingTransition\n };\n queue = newQueue;\n const stateHook = {\n memoizedState: NotPendingTransition,\n baseState: NotPendingTransition,\n baseQueue: null,\n queue: newQueue,\n next: null\n }; // Add the state hook to both fiber alternates. The idea is that the fiber\n // had this hook all along.\n\n formFiber.memoizedState = stateHook;\n const alternate = formFiber.alternate;\n\n if (alternate !== null) {\n alternate.memoizedState = stateHook;\n }\n } else {\n // This fiber was already upgraded to be stateful.\n const stateHook = formFiber.memoizedState;\n queue = stateHook.queue;\n }\n\n startTransition(formFiber, queue, pendingState, NotPendingTransition, // TODO: We can avoid this extra wrapper, somehow. Figure out layering\n // once more of this function is implemented.\n () => callback(formData));\n}\n\nfunction mountTransition() {\n const stateHook = mountStateImpl(false); // The `start` method never changes.\n\n const start = startTransition.bind(null, currentlyRenderingFiber$1, stateHook.queue, true, false);\n const hook = mountWorkInProgressHook();\n hook.memoizedState = start;\n return [false, start];\n}\n\nfunction updateTransition() {\n const _updateState = updateState(),\n booleanOrThenable = _updateState[0];\n\n const hook = updateWorkInProgressHook();\n const start = hook.memoizedState;\n const isPending = typeof booleanOrThenable === 'boolean' ? booleanOrThenable : // This will suspend until the async action scope has finished.\n useThenable(booleanOrThenable);\n return [isPending, start];\n}\n\nfunction rerenderTransition() {\n const _rerenderState = rerenderState(),\n booleanOrThenable = _rerenderState[0];\n\n const hook = updateWorkInProgressHook();\n const start = hook.memoizedState;\n const isPending = typeof booleanOrThenable === 'boolean' ? booleanOrThenable : // This will suspend until the async action scope has finished.\n useThenable(booleanOrThenable);\n return [isPending, start];\n}\n\nfunction useHostTransitionStatus() {\n\n const status = readContext(HostTransitionContext);\n return status !== null ? status : NotPendingTransition;\n}\n\nfunction mountId() {\n const hook = mountWorkInProgressHook();\n const root = getWorkInProgressRoot(); // TODO: In Fizz, id generation is specific to each server config. Maybe we\n // should do this in Fiber, too? Deferring this decision for now because\n // there's no other place to store the prefix except for an internal field on\n // the public createRoot object, which the fiber tree does not currently have\n // a reference to.\n\n const identifierPrefix = root.identifierPrefix;\n let id;\n\n if (getIsHydrating()) {\n const treeId = getTreeId(); // Use a captial R prefix for server-generated ids.\n\n id = ':' + identifierPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n // that represents the position of this useId hook among all the useId\n // hooks for this fiber.\n\n const localId = localIdCounter++;\n\n if (localId > 0) {\n id += 'H' + localId.toString(32);\n }\n\n id += ':';\n } else {\n // Use a lowercase r prefix for client-generated ids.\n const globalClientId = globalClientIdCounter++;\n id = ':' + identifierPrefix + 'r' + globalClientId.toString(32) + ':';\n }\n\n hook.memoizedState = id;\n return id;\n}\n\nfunction updateId() {\n const hook = updateWorkInProgressHook();\n const id = hook.memoizedState;\n return id;\n}\n\nfunction mountRefresh() {\n const hook = mountWorkInProgressHook();\n const refresh = hook.memoizedState = refreshCache.bind(null, currentlyRenderingFiber$1);\n return refresh;\n}\n\nfunction updateRefresh() {\n const hook = updateWorkInProgressHook();\n return hook.memoizedState;\n}\n\nfunction refreshCache(fiber, seedKey, seedValue) {\n // TODO: Consider warning if the refresh is at discrete priority, or if we\n // otherwise suspect that it wasn't batched properly.\n\n\n let provider = fiber.return;\n\n while (provider !== null) {\n switch (provider.tag) {\n case CacheComponent:\n case HostRoot:\n {\n // Schedule an update on the cache boundary to trigger a refresh.\n const lane = requestUpdateLane(provider);\n const refreshUpdate = createUpdate(lane);\n const root = enqueueUpdate(provider, refreshUpdate, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, provider, lane);\n entangleTransitions(root, provider, lane);\n } // TODO: If a refresh never commits, the new cache created here must be\n // released. A simple case is start refreshing a cache boundary, but then\n // unmount that boundary before the refresh completes.\n\n\n const seededCache = createCache();\n\n const payload = {\n cache: seededCache\n };\n refreshUpdate.payload = payload;\n return;\n }\n }\n\n provider = provider.return;\n } // TODO: Warn if unmounted?\n\n}\n\nfunction dispatchReducerAction(fiber, queue, action) {\n\n const lane = requestUpdateLane(fiber);\n const update = {\n lane,\n revertLane: NoLane,\n action,\n hasEagerState: false,\n eagerState: null,\n next: null\n };\n\n if (isRenderPhaseUpdate(fiber)) {\n enqueueRenderPhaseUpdate(queue, update);\n } else {\n const root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n entangleTransitionUpdate(root, queue, lane);\n }\n }\n}\n\nfunction dispatchSetState(fiber, queue, action) {\n\n const lane = requestUpdateLane(fiber);\n const update = {\n lane,\n revertLane: NoLane,\n action,\n hasEagerState: false,\n eagerState: null,\n next: null\n };\n\n if (isRenderPhaseUpdate(fiber)) {\n enqueueRenderPhaseUpdate(queue, update);\n } else {\n const alternate = fiber.alternate;\n\n if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n // The queue is currently empty, which means we can eagerly compute the\n // next state before entering the render phase. If the new state is the\n // same as the current state, we may be able to bail out entirely.\n const lastRenderedReducer = queue.lastRenderedReducer;\n\n if (lastRenderedReducer !== null) {\n\n try {\n const currentState = queue.lastRenderedState;\n const eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute\n // it, on the update object. If the reducer hasn't changed by the\n // time we enter the render phase, then the eager state can be used\n // without calling the reducer again.\n\n update.hasEagerState = true;\n update.eagerState = eagerState;\n\n if (objectIs(eagerState, currentState)) {\n // Fast path. We can bail out without scheduling React to re-render.\n // It's still possible that we'll need to rebase this update later,\n // if the component re-renders for a different reason and by that\n // time the reducer has changed.\n // TODO: Do we still need to entangle transitions in this case?\n enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update);\n return;\n }\n } catch (error) {// Suppress the error. It will throw again in the render phase.\n } finally {\n }\n }\n }\n\n const root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n entangleTransitionUpdate(root, queue, lane);\n }\n }\n}\n\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n requestCurrentTransition();\n\n const update = {\n // An optimistic update commits synchronously.\n lane: SyncLane,\n // After committing, the optimistic update is \"reverted\" using the same\n // lane as the transition it's associated with.\n revertLane: requestTransitionLane(),\n action,\n hasEagerState: false,\n eagerState: null,\n next: null\n };\n\n if (isRenderPhaseUpdate(fiber)) {\n // When calling startTransition during render, this warns instead of\n // throwing because throwing would be a breaking change. setOptimisticState\n // is a new API so it's OK to throw.\n if (throwIfDuringRender) {\n throw Error(formatProdErrorMessage(479));\n }\n } else {\n const root = enqueueConcurrentHookUpdate(fiber, queue, update, SyncLane);\n\n if (root !== null) {\n // NOTE: The optimistic update implementation assumes that the transition\n // will never be attempted before the optimistic update. This currently\n // holds because the optimistic update is always synchronous. If we ever\n // change that, we'll need to account for this.\n scheduleUpdateOnFiber(root, fiber, SyncLane); // Optimistic updates are always synchronous, so we don't need to call\n // entangleTransitionUpdate here.\n }\n }\n}\n\nfunction isRenderPhaseUpdate(fiber) {\n const alternate = fiber.alternate;\n return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n}\n\nfunction enqueueRenderPhaseUpdate(queue, update) {\n // This is a render phase update. Stash it in a lazily-created map of\n // queue -> linked list of updates. After this render pass, we'll restart\n // and apply the stashed updates on top of the work-in-progress hook.\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n const pending = queue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n queue.pending = update;\n} // TODO: Move to ReactFiberConcurrentUpdates?\n\n\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (isTransitionLane(lane)) {\n let queueLanes = queue.lanes; // If any entangled lanes are no longer pending on the root, then they\n // must have finished. We can remove them from the shared queue, which\n // represents a superset of the actually pending lanes. In some cases we\n // may entangle more than we need to, but that's OK. In fact it's worse if\n // we *don't* entangle when we should.\n\n queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n const newQueueLanes = mergeLanes(queueLanes, lane);\n queue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n // the lane finished since the last time we entangled it. So we need to\n // entangle it again, just to be sure.\n\n markRootEntangled(root, newQueueLanes);\n }\n}\n\nconst ContextOnlyDispatcher = {\n readContext,\n use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError\n};\n\n{\n ContextOnlyDispatcher.useCacheRefresh = throwInvalidHookError;\n}\n\n{\n ContextOnlyDispatcher.useHostTransitionStatus = throwInvalidHookError;\n ContextOnlyDispatcher.useFormState = throwInvalidHookError;\n}\n\n{\n ContextOnlyDispatcher.useOptimistic = throwInvalidHookError;\n}\n\nconst HooksDispatcherOnMount = {\n readContext,\n use,\n useCallback: mountCallback,\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: mountImperativeHandle,\n useLayoutEffect: mountLayoutEffect,\n useInsertionEffect: mountInsertionEffect,\n useMemo: mountMemo,\n useReducer: mountReducer,\n useRef: mountRef,\n useState: mountState,\n useDebugValue: mountDebugValue,\n useDeferredValue: mountDeferredValue,\n useTransition: mountTransition,\n useSyncExternalStore: mountSyncExternalStore,\n useId: mountId\n};\n\n{\n HooksDispatcherOnMount.useCacheRefresh = mountRefresh;\n}\n\n{\n HooksDispatcherOnMount.useHostTransitionStatus = useHostTransitionStatus;\n HooksDispatcherOnMount.useFormState = mountFormState;\n}\n\n{\n HooksDispatcherOnMount.useOptimistic = mountOptimistic;\n}\n\nconst HooksDispatcherOnUpdate = {\n readContext,\n use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: updateState,\n useDebugValue: updateDebugValue,\n useDeferredValue: updateDeferredValue,\n useTransition: updateTransition,\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId\n};\n\n{\n HooksDispatcherOnUpdate.useCacheRefresh = updateRefresh;\n}\n\n{\n HooksDispatcherOnUpdate.useHostTransitionStatus = useHostTransitionStatus;\n HooksDispatcherOnUpdate.useFormState = updateFormState;\n}\n\n{\n HooksDispatcherOnUpdate.useOptimistic = updateOptimistic;\n}\n\nconst HooksDispatcherOnRerender = {\n readContext,\n use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: rerenderState,\n useDebugValue: updateDebugValue,\n useDeferredValue: rerenderDeferredValue,\n useTransition: rerenderTransition,\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId\n};\n\n{\n HooksDispatcherOnRerender.useCacheRefresh = updateRefresh;\n}\n\n{\n HooksDispatcherOnRerender.useHostTransitionStatus = useHostTransitionStatus;\n HooksDispatcherOnRerender.useFormState = rerenderFormState;\n}\n\n{\n HooksDispatcherOnRerender.useOptimistic = rerenderOptimistic;\n}\n\nfunction recordLayoutEffectDuration(fiber) {\n {\n return;\n }\n}\n\nfunction startLayoutEffectTimer() {\n {\n return;\n }\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n if (Component && Component.defaultProps) {\n // Resolve default props. Taken from ReactElement\n const props = assign({}, baseProps);\n const defaultProps = Component.defaultProps;\n\n for (const propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n }\n\n return baseProps;\n}\n\nfunction applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {\n const prevState = workInProgress.memoizedState;\n let partialState = getDerivedStateFromProps(nextProps, prevState);\n\n\n const memoizedState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the\n // base state.\n\n if (workInProgress.lanes === NoLanes) {\n // Queue is always non-null for classes\n const updateQueue = workInProgress.updateQueue;\n updateQueue.baseState = memoizedState;\n }\n}\n\nconst classComponentUpdater = {\n isMounted,\n\n // $FlowFixMe[missing-local-annot]\n enqueueSetState(inst, payload, callback) {\n const fiber = get(inst);\n const lane = requestUpdateLane(fiber);\n const update = createUpdate(lane);\n update.payload = payload;\n\n if (callback !== undefined && callback !== null) {\n\n update.callback = callback;\n }\n\n const root = enqueueUpdate(fiber, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n entangleTransitions(root, fiber, lane);\n }\n },\n\n enqueueReplaceState(inst, payload, callback) {\n const fiber = get(inst);\n const lane = requestUpdateLane(fiber);\n const update = createUpdate(lane);\n update.tag = ReplaceState;\n update.payload = payload;\n\n if (callback !== undefined && callback !== null) {\n\n update.callback = callback;\n }\n\n const root = enqueueUpdate(fiber, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n entangleTransitions(root, fiber, lane);\n }\n },\n\n // $FlowFixMe[missing-local-annot]\n enqueueForceUpdate(inst, callback) {\n const fiber = get(inst);\n const lane = requestUpdateLane(fiber);\n const update = createUpdate(lane);\n update.tag = ForceUpdate;\n\n if (callback !== undefined && callback !== null) {\n\n update.callback = callback;\n }\n\n const root = enqueueUpdate(fiber, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n entangleTransitions(root, fiber, lane);\n }\n }\n\n};\n\nfunction checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {\n const instance = workInProgress.stateNode;\n\n if (typeof instance.shouldComponentUpdate === 'function') {\n let shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n\n return shouldUpdate;\n }\n\n if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n }\n\n return true;\n}\n\nfunction adoptClassInstance(workInProgress, instance) {\n instance.updater = classComponentUpdater;\n workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates\n\n set(instance, workInProgress);\n}\n\nfunction constructClassInstance(workInProgress, ctor, props) {\n let isLegacyContextConsumer = false;\n let unmaskedContext = emptyContextObject;\n let context = emptyContextObject;\n const contextType = ctor.contextType;\n\n if (typeof contextType === 'object' && contextType !== null) {\n context = readContext(contextType);\n } else {\n unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n const contextTypes = ctor.contextTypes;\n isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;\n context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;\n }\n\n let instance = new ctor(props, context); // Instantiate twice to help detect side-effects.\n\n workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;\n adoptClassInstance(workInProgress, instance);\n // ReactFiberContext usually updates this cache but can't for newly-created instances.\n\n\n if (isLegacyContextConsumer) {\n cacheContext(workInProgress, unmaskedContext, context);\n }\n\n return instance;\n}\n\nfunction callComponentWillMount(workInProgress, instance) {\n const oldState = instance.state;\n\n if (typeof instance.componentWillMount === 'function') {\n instance.componentWillMount();\n }\n\n if (typeof instance.UNSAFE_componentWillMount === 'function') {\n instance.UNSAFE_componentWillMount();\n }\n\n if (oldState !== instance.state) {\n\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n }\n}\n\nfunction callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {\n const oldState = instance.state;\n\n if (typeof instance.componentWillReceiveProps === 'function') {\n instance.componentWillReceiveProps(newProps, nextContext);\n }\n\n if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n }\n\n if (instance.state !== oldState) {\n\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n\n const instance = workInProgress.stateNode;\n instance.props = newProps;\n instance.state = workInProgress.memoizedState;\n instance.refs = {};\n initializeUpdateQueue(workInProgress);\n const contextType = ctor.contextType;\n\n if (typeof contextType === 'object' && contextType !== null) {\n instance.context = readContext(contextType);\n } else {\n const unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n instance.context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n instance.state = workInProgress.memoizedState;\n const getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n instance.state = workInProgress.memoizedState;\n } // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's\n // process them now.\n\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n instance.state = workInProgress.memoizedState;\n }\n\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update | LayoutStatic;\n }\n}\n\nfunction resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n const instance = workInProgress.stateNode;\n const oldProps = workInProgress.memoizedProps;\n instance.props = oldProps;\n const oldContext = instance.context;\n const contextType = ctor.contextType;\n let nextContext = emptyContextObject;\n\n if (typeof contextType === 'object' && contextType !== null) {\n nextContext = readContext(contextType);\n } else {\n const nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);\n }\n\n const getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n const hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n // ever the previously attempted to render - not the \"current\". However,\n // during componentDidUpdate we pass the \"current\" props.\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n if (oldProps !== newProps || oldContext !== nextContext) {\n callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n }\n }\n\n resetHasForceUpdateBeforeProcessing();\n const oldState = workInProgress.memoizedState;\n let newState = instance.state = oldState;\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n newState = workInProgress.memoizedState;\n\n if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update | LayoutStatic;\n }\n\n return false;\n }\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n newState = workInProgress.memoizedState;\n }\n\n const shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n if (shouldUpdate) {\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n if (typeof instance.componentWillMount === 'function') {\n instance.componentWillMount();\n }\n\n if (typeof instance.UNSAFE_componentWillMount === 'function') {\n instance.UNSAFE_componentWillMount();\n }\n }\n\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update | LayoutStatic;\n }\n } else {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidMount === 'function') {\n workInProgress.flags |= Update | LayoutStatic;\n }\n // memoized state to indicate that this work can be reused.\n\n\n workInProgress.memoizedProps = newProps;\n workInProgress.memoizedState = newState;\n } // Update the existing instance's state, props, and context pointers even\n // if shouldComponentUpdate returns false.\n\n\n instance.props = newProps;\n instance.state = newState;\n instance.context = nextContext;\n return shouldUpdate;\n} // Invokes the update life-cycles and returns false if it shouldn't rerender.\n\n\nfunction updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {\n const instance = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n const unresolvedOldProps = workInProgress.memoizedProps;\n const oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);\n instance.props = oldProps;\n const unresolvedNewProps = workInProgress.pendingProps;\n const oldContext = instance.context;\n const contextType = ctor.contextType;\n let nextContext = emptyContextObject;\n\n if (typeof contextType === 'object' && contextType !== null) {\n nextContext = readContext(contextType);\n } else {\n const nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);\n }\n\n const getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n const hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n // ever the previously attempted to render - not the \"current\". However,\n // during componentDidUpdate we pass the \"current\" props.\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n }\n }\n\n resetHasForceUpdateBeforeProcessing();\n const oldState = workInProgress.memoizedState;\n let newState = instance.state = oldState;\n processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n newState = workInProgress.memoizedState;\n\n if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !(enableLazyContextPropagation )) {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Update;\n }\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Snapshot;\n }\n }\n\n return false;\n }\n\n if (typeof getDerivedStateFromProps === 'function') {\n applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n newState = workInProgress.memoizedState;\n }\n\n const shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n // both before and after `shouldComponentUpdate` has been called. Not ideal,\n // but I'm loath to refactor this function. This only happens for memoized\n // components so it's not that common.\n enableLazyContextPropagation ;\n\n if (shouldUpdate) {\n // In order to support react-lifecycles-compat polyfilled components,\n // Unsafe lifecycles should not be invoked for components using the new APIs.\n if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n if (typeof instance.componentWillUpdate === 'function') {\n instance.componentWillUpdate(newProps, newState, nextContext);\n }\n\n if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n }\n }\n\n if (typeof instance.componentDidUpdate === 'function') {\n workInProgress.flags |= Update;\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n workInProgress.flags |= Snapshot;\n }\n } else {\n // If an update was already in progress, we should schedule an Update\n // effect even though we're bailing out, so that cWU/cDU are called.\n if (typeof instance.componentDidUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Update;\n }\n }\n\n if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n workInProgress.flags |= Snapshot;\n }\n } // If shouldComponentUpdate returned false, we should still update the\n // memoized props/state to indicate that this work can be reused.\n\n\n workInProgress.memoizedProps = newProps;\n workInProgress.memoizedState = newState;\n } // Update the existing instance's state, props, and context pointers even\n // if shouldComponentUpdate returns false.\n\n\n instance.props = newProps;\n instance.state = newState;\n instance.context = nextContext;\n return shouldUpdate;\n}\n\nconst CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n // If the value is an error, call this function immediately after it is thrown\n // so the stack is accurate.\n let stack;\n\n if (typeof value === 'object' && value !== null) {\n const capturedStack = CapturedStacks.get(value);\n\n if (typeof capturedStack === 'string') {\n stack = capturedStack;\n } else {\n stack = getStackByFiberInDevAndProd(source);\n CapturedStacks.set(value, stack);\n }\n } else {\n stack = getStackByFiberInDevAndProd(source);\n }\n\n return {\n value,\n source,\n stack,\n digest: null\n };\n}\nfunction createCapturedValueFromError(value, digest, stack) {\n if (typeof stack === 'string') {\n CapturedStacks.set(value, stack);\n }\n\n return {\n value,\n source: null,\n stack: stack != null ? stack : null,\n digest: digest != null ? digest : null\n };\n}\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(boundary, errorInfo) {\n return true;\n}\n\nfunction logCapturedError(boundary, errorInfo) {\n try {\n const logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.\n // This enables renderers like ReactNative to better manage redbox behavior.\n\n if (logError === false) ;\n\n const error = errorInfo.value;\n\n if (false) ; else {\n // In production, we print the error directly.\n // This will include the message, the JS stack, and anything the browser wants to show.\n // We pass the error object instead of custom message so that the browser displays the error natively.\n console['error'](error); // Don't transform to our wrapper\n }\n } catch (e) {\n // This method must not throw, or React internal state will get messed up.\n // If console.error is overridden, or logCapturedError() shows a dialog that throws,\n // we want to report this error outside of the normal stack as a last resort.\n // https://github.com/facebook/react/issues/13188\n setTimeout(() => {\n throw e;\n });\n }\n}\n\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n const update = createUpdate(lane); // Unmount the root by rendering null.\n\n update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n update.payload = {\n element: null\n };\n const error = errorInfo.value;\n\n update.callback = () => {\n onUncaughtError(error);\n logCapturedError(fiber, errorInfo);\n };\n\n return update;\n}\n\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n const update = createUpdate(lane);\n update.tag = CaptureUpdate;\n const getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n\n if (typeof getDerivedStateFromError === 'function') {\n const error = errorInfo.value;\n\n update.payload = () => {\n return getDerivedStateFromError(error);\n };\n\n update.callback = () => {\n\n logCapturedError(fiber, errorInfo);\n };\n }\n\n const inst = fiber.stateNode;\n\n if (inst !== null && typeof inst.componentDidCatch === 'function') {\n // $FlowFixMe[missing-this-annot]\n update.callback = function callback() {\n\n logCapturedError(fiber, errorInfo);\n\n if (typeof getDerivedStateFromError !== 'function') {\n // To preserve the preexisting retry behavior of error boundaries,\n // we keep track of which ones already failed during this batch.\n // This gets reset before we yield back to the browser.\n // TODO: Warn in strict mode if getDerivedStateFromError is\n // not defined.\n markLegacyErrorBoundaryAsFailed(this);\n }\n\n const error = errorInfo.value;\n const stack = errorInfo.stack;\n this.componentDidCatch(error, {\n componentStack: stack !== null ? stack : ''\n });\n };\n }\n\n return update;\n}\n\nfunction resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n // A legacy mode Suspense quirk, only relevant to hook components.\n\n\n const tag = sourceFiber.tag;\n\n if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n const currentSource = sourceFiber.alternate;\n\n if (currentSource) {\n sourceFiber.updateQueue = currentSource.updateQueue;\n sourceFiber.memoizedState = currentSource.memoizedState;\n sourceFiber.lanes = currentSource.lanes;\n } else {\n sourceFiber.updateQueue = null;\n sourceFiber.memoizedState = null;\n }\n }\n}\n\nfunction markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes) {\n // This marks a Suspense boundary so that when we're unwinding the stack,\n // it captures the suspended \"exception\" and does a second (fallback) pass.\n if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n // Legacy Mode Suspense\n //\n // If the boundary is in legacy mode, we should *not*\n // suspend the commit. Pretend as if the suspended component rendered\n // null and keep rendering. When the Suspense boundary completes,\n // we'll do a second pass to render the fallback.\n if (suspenseBoundary === returnFiber) {\n // Special case where we suspended while reconciling the children of\n // a Suspense boundary's inner Offscreen wrapper fiber. This happens\n // when a React.lazy component is a direct child of a\n // Suspense boundary.\n //\n // Suspense boundaries are implemented as multiple fibers, but they\n // are a single conceptual unit. The legacy mode behavior where we\n // pretend the suspended fiber committed as `null` won't work,\n // because in this case the \"suspended\" fiber is the inner\n // Offscreen wrapper.\n //\n // Because the contents of the boundary haven't started rendering\n // yet (i.e. nothing in the tree has partially rendered) we can\n // switch to the regular, concurrent mode behavior: mark the\n // boundary with ShouldCapture and enter the unwind phase.\n suspenseBoundary.flags |= ShouldCapture;\n } else {\n suspenseBoundary.flags |= DidCapture;\n sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.\n // But we shouldn't call any lifecycle methods or callbacks. Remove\n // all lifecycle effect tags.\n\n sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n\n if (sourceFiber.tag === ClassComponent) {\n const currentSourceFiber = sourceFiber.alternate;\n\n if (currentSourceFiber === null) {\n // This is a new mount. Change the tag so it's not mistaken for a\n // completed class component. For example, we should not call\n // componentWillUnmount if it is deleted.\n sourceFiber.tag = IncompleteClassComponent;\n } else {\n // When we try rendering again, we should not reuse the current fiber,\n // since it's known to be in an inconsistent state. Use a force update to\n // prevent a bail out.\n const update = createUpdate(SyncLane);\n update.tag = ForceUpdate;\n enqueueUpdate(sourceFiber, update, SyncLane);\n }\n } // The source fiber did not complete. Mark it with Sync priority to\n // indicate that it still has pending work.\n\n\n sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n }\n\n return suspenseBoundary;\n } // Confirmed that the boundary is in a concurrent mode tree. Continue\n // with the normal suspend path.\n //\n // After this we'll use a set of heuristics to determine whether this\n // render pass will run to completion or restart or \"suspend\" the commit.\n // The actual logic for this is spread out in different places.\n //\n // This first principle is that if we're going to suspend when we complete\n // a root, then we should also restart if we get an update or ping that\n // might unsuspend it, and vice versa. The only reason to suspend is\n // because you think you might want to restart before committing. However,\n // it doesn't make sense to restart only while in the period we're suspended.\n //\n // Restarting too aggressively is also not good because it starves out any\n // intermediate loading state. So we use heuristics to determine when.\n // Suspense Heuristics\n //\n // If nothing threw a Promise or all the same fallbacks are already showing,\n // then don't suspend/restart.\n //\n // If this is an initial render of a new tree of Suspense boundaries and\n // those trigger a fallback, then don't suspend/restart. We want to ensure\n // that we can show the initial loading state as quickly as possible.\n //\n // If we hit a \"Delayed\" case, such as when we'd switch from content back into\n // a fallback, then we should always suspend/restart. Transitions apply\n // to this case. If none is defined, JND is used instead.\n //\n // If we're already showing a fallback and it gets \"retried\", allowing us to show\n // another level, but there's still an inner boundary that would show a fallback,\n // then we suspend/restart for 500ms since the last time we showed a fallback\n // anywhere in the tree. This effectively throttles progressive loading into a\n // consistent train of commits. This also gives us an opportunity to restart to\n // get to the completed state slightly earlier.\n //\n // If there's ambiguity due to batching it's resolved in preference of:\n // 1) \"delayed\", 2) \"initial render\", 3) \"retry\".\n //\n // We want to ensure that a \"busy\" state doesn't get force committed. We want to\n // ensure that new initial loading states can commit as soon as possible.\n\n\n suspenseBoundary.flags |= ShouldCapture; // TODO: I think we can remove this, since we now use `DidCapture` in\n // the begin phase to prevent an early bailout.\n\n suspenseBoundary.lanes = rootRenderLanes;\n return suspenseBoundary;\n}\n\nfunction throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n // The source fiber did not complete.\n sourceFiber.flags |= Incomplete;\n\n if (value !== null && typeof value === 'object') {\n\n if (typeof value.then === 'function') {\n // This is a wakeable. The component suspended.\n const wakeable = value;\n resetSuspendedComponent(sourceFiber);\n\n\n const suspenseBoundary = getSuspenseHandler();\n\n if (suspenseBoundary !== null) {\n switch (suspenseBoundary.tag) {\n case SuspenseComponent:\n {\n // If this suspense boundary is not already showing a fallback, mark\n // the in-progress render as suspended. We try to perform this logic\n // as soon as soon as possible during the render phase, so the work\n // loop can know things like whether it's OK to switch to other tasks,\n // or whether it can wait for data to resolve before continuing.\n // TODO: Most of these checks are already performed when entering a\n // Suspense boundary. We should track the information on the stack so\n // we don't have to recompute it on demand. This would also allow us\n // to unify with `use` which needs to perform this logic even sooner,\n // before `throwException` is called.\n if (sourceFiber.mode & ConcurrentMode) {\n if (getShellBoundary() === null) {\n // Suspended in the \"shell\" of the app. This is an undesirable\n // loading state. We should avoid committing this tree.\n renderDidSuspendDelayIfPossible();\n } else {\n // If we suspended deeper than the shell, we don't need to delay\n // the commmit. However, we still call renderDidSuspend if this is\n // a new boundary, to tell the work loop that a new fallback has\n // appeared during this render.\n // TODO: Theoretically we should be able to delete this branch.\n // It's currently used for two things: 1) to throttle the\n // appearance of successive loading states, and 2) in\n // SuspenseList, to determine whether the children include any\n // pending fallbacks. For 1, we should apply throttling to all\n // retries, not just ones that render an additional fallback. For\n // 2, we should check subtreeFlags instead. Then we can delete\n // this branch.\n const current = suspenseBoundary.alternate;\n\n if (current === null) {\n renderDidSuspend();\n }\n }\n }\n\n suspenseBoundary.flags &= ~ForceClientRender;\n markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // Retry listener\n //\n // If the fallback does commit, we need to attach a different type of\n // listener. This one schedules an update on the Suspense boundary to\n // turn the fallback state off.\n //\n // Stash the wakeable on the boundary fiber so we can access it in the\n // commit phase.\n //\n // When the wakeable resolves, we'll attempt to render the boundary\n // again (\"retry\").\n // Check if this is a Suspensey resource. We do not attach retry\n // listeners to these, because we don't actually need them for\n // rendering. Only for committing. Instead, if a fallback commits\n // and the only thing that suspended was a Suspensey resource, we\n // retry immediately.\n // TODO: Refactor throwException so that we don't have to do this type\n // check. The caller already knows what the cause was.\n\n const isSuspenseyResource = wakeable === noopSuspenseyCommitThenable;\n\n if (isSuspenseyResource) {\n suspenseBoundary.flags |= ScheduleRetry;\n } else {\n const retryQueue = suspenseBoundary.updateQueue;\n\n if (retryQueue === null) {\n suspenseBoundary.updateQueue = new Set([wakeable]);\n } else {\n retryQueue.add(wakeable);\n } // We only attach ping listeners in concurrent mode. Legacy\n // Suspense always commits fallbacks synchronously, so there are\n // no pings.\n\n\n if (suspenseBoundary.mode & ConcurrentMode) {\n attachPingListener(root, wakeable, rootRenderLanes);\n }\n }\n\n return false;\n }\n\n case OffscreenComponent:\n {\n if (suspenseBoundary.mode & ConcurrentMode) {\n suspenseBoundary.flags |= ShouldCapture;\n const isSuspenseyResource = wakeable === noopSuspenseyCommitThenable;\n\n if (isSuspenseyResource) {\n suspenseBoundary.flags |= ScheduleRetry;\n } else {\n const offscreenQueue = suspenseBoundary.updateQueue;\n\n if (offscreenQueue === null) {\n const newOffscreenQueue = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([wakeable])\n };\n suspenseBoundary.updateQueue = newOffscreenQueue;\n } else {\n const retryQueue = offscreenQueue.retryQueue;\n\n if (retryQueue === null) {\n offscreenQueue.retryQueue = new Set([wakeable]);\n } else {\n retryQueue.add(wakeable);\n }\n }\n\n attachPingListener(root, wakeable, rootRenderLanes);\n }\n\n return false;\n }\n }\n }\n\n throw Error(formatProdErrorMessage(435, suspenseBoundary.tag));\n } else {\n // No boundary was found. Unless this is a sync update, this is OK.\n // We can suspend and wait for more data to arrive.\n if (root.tag === ConcurrentRoot) {\n // In a concurrent root, suspending without a Suspense boundary is\n // allowed. It will suspend indefinitely without committing.\n //\n // TODO: Should we have different behavior for discrete updates? What\n // about flushSync? Maybe it should put the tree into an inert state,\n // and potentially log a warning. Revisit this for a future release.\n attachPingListener(root, wakeable, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return false;\n } else {\n // In a legacy root, suspending without a boundary is always an error.\n const uncaughtSuspenseError = Error(formatProdErrorMessage(426));\n value = uncaughtSuspenseError;\n }\n }\n }\n } // This is a regular error, not a Suspense wakeable.\n\n\n if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n const suspenseBoundary = getSuspenseHandler(); // If the error was thrown during hydration, we may be able to recover by\n // discarding the dehydrated content and switching to a client render.\n // Instead of surfacing the error, find the nearest Suspense boundary\n // and render it again without hydration.\n\n if (suspenseBoundary !== null) {\n if ((suspenseBoundary.flags & ShouldCapture) === NoFlags$1) {\n // Set a flag to indicate that we should try rendering the normal\n // children again, not the fallback.\n suspenseBoundary.flags |= ForceClientRender;\n }\n\n markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // Even though the user may not be affected by this error, we should\n // still log it so it can be fixed.\n\n queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));\n return false;\n }\n }\n\n value = createCapturedValueAtFiber(value, sourceFiber);\n renderDidError(value); // We didn't find a boundary that could handle this type of exception. Start\n // over and traverse parent path again, this time treating the exception\n // as an error.\n\n if (returnFiber === null) {\n // There's no return fiber, which means the root errored. This should never\n // happen. Return `true` to trigger a fatal error (panic).\n return true;\n }\n\n let workInProgress = returnFiber;\n\n do {\n switch (workInProgress.tag) {\n case HostRoot:\n {\n const errorInfo = value;\n workInProgress.flags |= ShouldCapture;\n const lane = pickArbitraryLane(rootRenderLanes);\n workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);\n const update = createRootErrorUpdate(workInProgress, errorInfo, lane);\n enqueueCapturedUpdate(workInProgress, update);\n return false;\n }\n\n case ClassComponent:\n // Capture and retry\n const errorInfo = value;\n const ctor = workInProgress.type;\n const instance = workInProgress.stateNode;\n\n if ((workInProgress.flags & DidCapture) === NoFlags$1 && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n workInProgress.flags |= ShouldCapture;\n const lane = pickArbitraryLane(rootRenderLanes);\n workInProgress.lanes = mergeLanes(workInProgress.lanes, lane); // Schedule the error boundary to re-render using updated state\n\n const update = createClassErrorUpdate(workInProgress, errorInfo, lane);\n enqueueCapturedUpdate(workInProgress, update);\n return false;\n }\n\n break;\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n workInProgress = workInProgress.return;\n } while (workInProgress !== null);\n\n return false;\n}\n\nconst ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner; // A special exception that's used to unwind the stack when an update flows\n// into a dehydrated boundary.\n\nconst SelectiveHydrationException = Error(formatProdErrorMessage(461));\nlet didReceiveUpdate = false;\n\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n if (current === null) {\n // If this is a fresh new component that hasn't been rendered yet, we\n // won't update its child set by applying minimal side-effects. Instead,\n // we will add them all to the child before it gets rendered. That means\n // we can optimize this reconciliation pass by not tracking side-effects.\n workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n } else {\n // If the current child is the same as the work in progress, it means that\n // we haven't yet started any work on these children. Therefore, we use\n // the clone algorithm to create a copy of all the current children.\n // If we had any progressed work already, that is invalid at this point so\n // let's throw it out.\n workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);\n }\n}\n\nfunction forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {\n // This function is fork of reconcileChildren. It's used in cases where we\n // want to reconcile without matching against the existing set. This has the\n // effect of all current children being unmounted; even if the type and key\n // are the same, the old child is unmounted and a new child is created.\n //\n // To do this, we're going to go through the reconcile algorithm twice. In\n // the first pass, we schedule a deletion for all the current children by\n // passing null.\n workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we\n // pass null in place of where we usually pass the current child set. This has\n // the effect of remounting all children regardless of whether their\n // identities match.\n\n workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n}\n\nfunction updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {\n // TODO: current can be non-null here even if the component\n // hasn't yet mounted. This happens after the first render suspends.\n // We'll need to figure out if this is fine or can cause issues.\n const render = Component.render;\n const ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent\n\n let nextChildren;\n let hasId;\n prepareToReadContext(workInProgress, renderLanes);\n\n {\n nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n hasId = checkDidRenderIdHook();\n }\n\n if (current !== null && !didReceiveUpdate) {\n bailoutHooks(current, workInProgress, renderLanes);\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n if (getIsHydrating() && hasId) {\n pushMaterializedTreeId(workInProgress);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n if (current === null) {\n const type = Component.type;\n\n if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n Component.defaultProps === undefined) {\n let resolvedType = type;\n // and with only the default shallow comparison, we upgrade it\n // to a SimpleMemoComponent to allow fast path updates.\n\n\n workInProgress.tag = SimpleMemoComponent;\n workInProgress.type = resolvedType;\n\n return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, renderLanes);\n }\n\n const child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);\n child.ref = workInProgress.ref;\n child.return = workInProgress;\n workInProgress.child = child;\n return child;\n }\n\n const currentChild = current.child; // This is always exactly one child\n\n const hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n if (!hasScheduledUpdateOrContext) {\n // This will be the props with resolved defaultProps,\n // unlike current.memoizedProps which will be the unresolved ones.\n const prevProps = currentChild.memoizedProps; // Default to shallow comparison\n\n let compare = Component.compare;\n compare = compare !== null ? compare : shallowEqual;\n\n if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n const newChild = createWorkInProgress(currentChild, nextProps);\n newChild.ref = workInProgress.ref;\n newChild.return = workInProgress;\n workInProgress.child = newChild;\n return newChild;\n}\n\nfunction updateSimpleMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n // TODO: current can be non-null here even if the component\n // hasn't yet mounted. This happens when the inner render suspends.\n // We'll need to figure out if this is fine or can cause issues.\n if (current !== null) {\n const prevProps = current.memoizedProps;\n\n if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.\n true)) {\n didReceiveUpdate = false; // The props are shallowly equal. Reuse the previous props object, like we\n // would during a normal fiber bailout.\n //\n // We don't have strong guarantees that the props object is referentially\n // equal during updates where we can't bail out anyway — like if the props\n // are shallowly equal, but there's a local state or context update in the\n // same batch.\n //\n // However, as a principle, we should aim to make the behavior consistent\n // across different ways of memoizing a component. For example, React.memo\n // has a different internal Fiber layout if you pass a normal function\n // component (SimpleMemoComponent) versus if you pass a different type\n // like forwardRef (MemoComponent). But this is an implementation detail.\n // Wrapping a component in forwardRef (or React.lazy, etc) shouldn't\n // affect whether the props object is reused during a bailout.\n\n workInProgress.pendingProps = nextProps = prevProps;\n\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n // The pending lanes were cleared at the beginning of beginWork. We're\n // about to bail out, but there might be other lanes that weren't\n // included in the current render. Usually, the priority level of the\n // remaining updates is accumulated during the evaluation of the\n // component (i.e. when processing the update queue). But since since\n // we're bailing out early *without* evaluating the component, we need\n // to account for it here, too. Reset to the value of the current fiber.\n // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,\n // because a MemoComponent fiber does not have hooks or an update queue;\n // rather, it wraps around an inner component, which may or may not\n // contains hooks.\n // TODO: Move the reset at in beginWork out of the common path so that\n // this is no longer necessary.\n workInProgress.lanes = current.lanes;\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags$1) {\n // This is a special case that only exists for legacy mode.\n // See https://github.com/facebook/react/pull/19216.\n didReceiveUpdate = true;\n }\n }\n }\n\n return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);\n}\n\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n const nextProps = workInProgress.pendingProps;\n const nextChildren = nextProps.children;\n const nextIsDetached = (workInProgress.stateNode._pendingVisibility & OffscreenDetached) !== 0;\n const prevState = current !== null ? current.memoizedState : null;\n markRef$1(current, workInProgress);\n\n if (nextProps.mode === 'hidden' || enableLegacyHidden || nextIsDetached) {\n // Rendering a hidden tree.\n const didSuspend = (workInProgress.flags & DidCapture) !== NoFlags$1;\n\n if (didSuspend) {\n // Something suspended inside a hidden tree\n // Include the base lanes from the last render\n const nextBaseLanes = prevState !== null ? mergeLanes(prevState.baseLanes, renderLanes) : renderLanes;\n\n if (current !== null) {\n // Reset to the current children\n let currentChild = workInProgress.child = current.child; // The current render suspended, but there may be other lanes with\n // pending work. We can't read `childLanes` from the current Offscreen\n // fiber because we reset it when it was deferred; however, we can read\n // the pending lanes from the child fibers.\n\n let currentChildLanes = NoLanes;\n\n while (currentChild !== null) {\n currentChildLanes = mergeLanes(mergeLanes(currentChildLanes, currentChild.lanes), currentChild.childLanes);\n currentChild = currentChild.sibling;\n }\n\n const lanesWeJustAttempted = nextBaseLanes;\n const remainingChildLanes = removeLanes(currentChildLanes, lanesWeJustAttempted);\n workInProgress.childLanes = remainingChildLanes;\n } else {\n workInProgress.childLanes = NoLanes;\n workInProgress.child = null;\n }\n\n return deferHiddenOffscreenComponent(current, workInProgress, nextBaseLanes);\n }\n\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n // In legacy sync mode, don't defer the subtree. Render it now.\n // TODO: Consider how Offscreen should work with transitions in the future\n const nextState = {\n baseLanes: NoLanes,\n cachePool: null\n };\n workInProgress.memoizedState = nextState;\n\n {\n // push the cache pool even though we're going to bail out\n // because otherwise there'd be a context mismatch\n if (current !== null) {\n pushTransition(workInProgress, null);\n }\n }\n\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n } else if (!includesSomeLane(renderLanes, OffscreenLane)) {\n // We're hidden, and we're not rendering at Offscreen. We will bail out\n // and resume this tree later.\n // Schedule this fiber to re-render at Offscreen priority\n workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane); // Include the base lanes from the last render\n\n const nextBaseLanes = prevState !== null ? mergeLanes(prevState.baseLanes, renderLanes) : renderLanes;\n return deferHiddenOffscreenComponent(current, workInProgress, nextBaseLanes);\n } else {\n // This is the second render. The surrounding visible content has already\n // committed. Now we resume rendering the hidden tree.\n // Rendering at offscreen, so we can clear the base lanes.\n const nextState = {\n baseLanes: NoLanes,\n cachePool: null\n };\n workInProgress.memoizedState = nextState;\n\n if (current !== null) {\n // If the render that spawned this one accessed the cache pool, resume\n // using the same cache. Unless the parent changed, since that means\n // there was a refresh.\n const prevCachePool = prevState !== null ? prevState.cachePool : null; // TODO: Consider if and how Offscreen pre-rendering should\n // be attributed to the transition that spawned it\n\n pushTransition(workInProgress, prevCachePool);\n } // Push the lanes that were skipped when we bailed out.\n\n\n if (prevState !== null) {\n pushHiddenContext(workInProgress, prevState);\n } else {\n reuseHiddenContextOnStack();\n }\n\n pushOffscreenSuspenseHandler(workInProgress);\n }\n } else {\n // Rendering a visible tree.\n if (prevState !== null) {\n // We're going from hidden -> visible.\n let prevCachePool = null;\n\n {\n // If the render that spawned this one accessed the cache pool, resume\n // using the same cache. Unless the parent changed, since that means\n // there was a refresh.\n prevCachePool = prevState.cachePool;\n }\n\n pushTransition(workInProgress, prevCachePool); // Push the lanes that were skipped when we bailed out.\n\n pushHiddenContext(workInProgress, prevState);\n reuseSuspenseHandlerOnStack(workInProgress); // Since we're not hidden anymore, reset the state\n\n workInProgress.memoizedState = null;\n } else {\n // We weren't previously hidden, and we still aren't, so there's nothing\n // special to do. Need to push to the stack regardless, though, to avoid\n // a push/pop misalignment.\n {\n // If the render that spawned this one accessed the cache pool, resume\n // using the same cache. Unless the parent changed, since that means\n // there was a refresh.\n if (current !== null) {\n pushTransition(workInProgress, null);\n }\n } // We're about to bail out, but we need to push this to the stack anyway\n // to avoid a push/pop misalignment.\n\n\n reuseHiddenContextOnStack();\n reuseSuspenseHandlerOnStack(workInProgress);\n }\n }\n\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction deferHiddenOffscreenComponent(current, workInProgress, nextBaseLanes, renderLanes) {\n const nextState = {\n baseLanes: nextBaseLanes,\n // Save the cache pool so we can resume later.\n cachePool: getOffscreenDeferredCache() \n };\n workInProgress.memoizedState = nextState;\n\n {\n // push the cache pool even though we're going to bail out\n // because otherwise there'd be a context mismatch\n if (current !== null) {\n pushTransition(workInProgress, null);\n }\n } // We're about to bail out, but we need to push this to the stack anyway\n // to avoid a push/pop misalignment.\n\n\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n\n return null;\n} // Note: These happen to have identical begin phases, for now. We shouldn't hold\n\nfunction updateCacheComponent(current, workInProgress, renderLanes) {\n\n prepareToReadContext(workInProgress, renderLanes);\n const parentCache = readContext(CacheContext);\n\n if (current === null) {\n // Initial mount. Request a fresh cache from the pool.\n const freshCache = requestCacheFromPool(renderLanes);\n const initialState = {\n parent: parentCache,\n cache: freshCache\n };\n workInProgress.memoizedState = initialState;\n initializeUpdateQueue(workInProgress);\n pushCacheProvider(workInProgress, freshCache);\n } else {\n // Check for updates\n if (includesSomeLane(current.lanes, renderLanes)) {\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, null, null, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n }\n\n const prevState = current.memoizedState;\n const nextState = workInProgress.memoizedState; // Compare the new parent cache to the previous to see detect there was\n // a refresh.\n\n if (prevState.parent !== parentCache) {\n // Refresh in parent. Update the parent.\n const derivedState = {\n parent: parentCache,\n cache: parentCache\n }; // Copied from getDerivedStateFromProps implementation. Once the update\n // queue is empty, persist the derived state onto the base state.\n\n workInProgress.memoizedState = derivedState;\n\n if (workInProgress.lanes === NoLanes) {\n const updateQueue = workInProgress.updateQueue;\n workInProgress.memoizedState = updateQueue.baseState = derivedState;\n }\n\n pushCacheProvider(workInProgress, parentCache); // No need to propagate a context change because the refreshed parent\n // already did.\n } else {\n // The parent didn't refresh. Now check if this cache did.\n const nextCache = nextState.cache;\n pushCacheProvider(workInProgress, nextCache);\n\n if (nextCache !== prevState.cache) {\n // This cache refreshed. Propagate a context change.\n propagateContextChange(workInProgress, CacheContext, renderLanes);\n }\n }\n }\n\n const nextChildren = workInProgress.pendingProps.children;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n} // This should only be called if the name changes\n\nfunction updateFragment(current, workInProgress, renderLanes) {\n const nextChildren = workInProgress.pendingProps;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateMode(current, workInProgress, renderLanes) {\n const nextChildren = workInProgress.pendingProps.children;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateProfiler(current, workInProgress, renderLanes) {\n\n const nextProps = workInProgress.pendingProps;\n const nextChildren = nextProps.children;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction markRef$1(current, workInProgress) {\n const ref = workInProgress.ref;\n\n if (current === null && ref !== null || current !== null && current.ref !== ref) {\n // Schedule a Ref effect\n workInProgress.flags |= Ref;\n workInProgress.flags |= RefStatic;\n }\n}\n\nfunction updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {\n let context;\n\n {\n const unmaskedContext = getUnmaskedContext(workInProgress, Component, true);\n context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n let nextChildren;\n let hasId;\n prepareToReadContext(workInProgress, renderLanes);\n\n {\n nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n hasId = checkDidRenderIdHook();\n }\n\n if (current !== null && !didReceiveUpdate) {\n bailoutHooks(current, workInProgress, renderLanes);\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n if (getIsHydrating() && hasId) {\n pushMaterializedTreeId(workInProgress);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction replayFunctionComponent(current, workInProgress, nextProps, Component, secondArg, renderLanes) {\n // This function is used to replay a component that previously suspended,\n // after its data resolves. It's a simplified version of\n // updateFunctionComponent that reuses the hooks from the previous attempt.\n prepareToReadContext(workInProgress, renderLanes);\n\n const nextChildren = replaySuspendedComponentWithHooks(current, workInProgress, Component, nextProps, secondArg);\n const hasId = checkDidRenderIdHook();\n\n if (current !== null && !didReceiveUpdate) {\n bailoutHooks(current, workInProgress, renderLanes);\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n if (getIsHydrating() && hasId) {\n pushMaterializedTreeId(workInProgress);\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n\n let hasContext;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n const instance = workInProgress.stateNode;\n let shouldUpdate;\n\n if (instance === null) {\n resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress); // In the initial pass we might need to construct the instance.\n\n constructClassInstance(workInProgress, Component, nextProps);\n mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n shouldUpdate = true;\n } else if (current === null) {\n // In a resume, we'll already have an instance we can reuse.\n shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);\n } else {\n shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);\n }\n\n const nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);\n\n return nextUnitOfWork;\n}\n\nfunction finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {\n // Refs should update even if shouldComponentUpdate returns false\n markRef$1(current, workInProgress);\n const didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags$1;\n\n if (!shouldUpdate && !didCaptureError) {\n // Context providers should defer to sCU for rendering\n if (hasContext) {\n invalidateContextProvider(workInProgress, Component, false);\n }\n\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n const instance = workInProgress.stateNode; // Rerender\n\n ReactCurrentOwner$1.current = workInProgress;\n let nextChildren;\n\n if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {\n // If we captured an error, but getDerivedStateFromError is not defined,\n // unmount all the children. componentDidCatch will schedule an update to\n // re-render a fallback. This is temporary until we migrate everyone to\n // the new API.\n // TODO: Warn in a future release.\n nextChildren = null;\n } else {\n\n {\n nextChildren = instance.render();\n }\n } // React DevTools reads this flag.\n\n\n workInProgress.flags |= PerformedWork;\n\n if (current !== null && didCaptureError) {\n // If we're recovering from an error, reconcile without reusing any of\n // the existing children. Conceptually, the normal children and the children\n // that are shown on error are two different sets, so we shouldn't reuse\n // normal children even if their identities match.\n forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);\n } else {\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n } // Memoize state using the values we just used to render.\n // TODO: Restructure so we never read values from the instance.\n\n\n workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.\n\n if (hasContext) {\n invalidateContextProvider(workInProgress, Component, true);\n }\n\n return workInProgress.child;\n}\n\nfunction pushHostRootContext(workInProgress) {\n const root = workInProgress.stateNode;\n\n if (root.pendingContext) {\n pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n } else if (root.context) {\n // Should always be set\n pushTopLevelContextObject(workInProgress, root.context, false);\n }\n\n pushHostContainer(workInProgress, root.containerInfo);\n}\n\nfunction updateHostRoot(current, workInProgress, renderLanes) {\n pushHostRootContext(workInProgress);\n\n if (current === null) {\n throw Error(formatProdErrorMessage(387));\n }\n\n const nextProps = workInProgress.pendingProps;\n const prevState = workInProgress.memoizedState;\n const prevChildren = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n const nextState = workInProgress.memoizedState;\n\n {\n const nextCache = nextState.cache;\n pushCacheProvider(workInProgress, nextCache);\n\n if (nextCache !== prevState.cache) {\n // The root cache refreshed.\n propagateContextChange(workInProgress, CacheContext, renderLanes);\n }\n } // This would ideally go inside processUpdateQueue, but because it suspends,\n // it needs to happen after the `pushCacheProvider` call above to avoid a\n // context stack mismatch. A bit unfortunate.\n\n\n suspendIfUpdateReadFromEntangledAsyncAction(); // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n const nextChildren = nextState.element;\n\n if (prevState.isDehydrated) {\n // This is a hydration root whose shell has not yet hydrated. We should\n // attempt to hydrate.\n // Flip isDehydrated to false to indicate that when this render\n // finishes, the root will no longer be dehydrated.\n const overrideState = {\n element: nextChildren,\n isDehydrated: false,\n cache: nextState.cache\n };\n const updateQueue = workInProgress.updateQueue; // `baseState` can always be the last state because the root doesn't\n // have reducer functions so it doesn't need rebasing.\n\n updateQueue.baseState = overrideState;\n workInProgress.memoizedState = overrideState;\n\n if (workInProgress.flags & ForceClientRender) {\n // Something errored during a previous attempt to hydrate the shell, so we\n // forced a client render.\n const recoverableError = createCapturedValueAtFiber(Error(formatProdErrorMessage(423)), workInProgress);\n return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n } else if (nextChildren !== prevChildren) {\n const recoverableError = createCapturedValueAtFiber(Error(formatProdErrorMessage(424)), workInProgress);\n return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n } else {\n // The outermost shell has not hydrated yet. Start hydrating.\n enterHydrationState(workInProgress);\n const child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n workInProgress.child = child;\n let node = child;\n\n while (node) {\n // Mark each child as hydrating. This is a fast path to know whether this\n // tree is part of a hydrating tree. This is used to determine if a child\n // node has fully mounted yet, and for scheduling event replaying.\n // Conceptually this is similar to Placement in that a new subtree is\n // inserted into the React tree here. It just happens to not need DOM\n // mutations because it already exists.\n node.flags = node.flags & ~Placement | Hydrating;\n node = node.sibling;\n }\n }\n } else {\n // Root is not dehydrated. Either this is a client-only root, or it\n // already hydrated.\n resetHydrationState();\n\n if (nextChildren === prevChildren) {\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n }\n\n return workInProgress.child;\n}\n\nfunction mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError) {\n // Revert to client rendering.\n resetHydrationState();\n queueHydrationError(recoverableError);\n workInProgress.flags |= ForceClientRender;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateHostComponent$1(current, workInProgress, renderLanes) {\n pushHostContext(workInProgress);\n\n if (current === null) {\n tryToClaimNextHydratableInstance(workInProgress);\n }\n\n const type = workInProgress.type;\n const nextProps = workInProgress.pendingProps;\n const prevProps = current !== null ? current.memoizedProps : null;\n let nextChildren = nextProps.children;\n const isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n if (isDirectTextChild) {\n // We special case a direct text child of a host node. This is a common\n // case. We won't handle it as a reified child. We will instead handle\n // this in the host environment that also has access to this prop. That\n // avoids allocating another HostText fiber and traversing it.\n nextChildren = null;\n } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n // If we're switching from a direct text child to a normal child, or to\n // empty, we need to schedule the text content to be reset.\n workInProgress.flags |= ContentReset;\n }\n\n {\n const memoizedState = workInProgress.memoizedState;\n\n if (memoizedState !== null) {\n // This fiber has been upgraded to a stateful component. The only way\n // happens currently is for form actions. We use hooks to track the\n // pending and error state of the form.\n //\n // Once a fiber is upgraded to be stateful, it remains stateful for the\n // rest of its lifetime.\n const newState = renderTransitionAwareHostComponentWithHooks(current, workInProgress, renderLanes); // If the transition state changed, propagate the change to all the\n // descendents. We use Context as an implementation detail for this.\n //\n // This is intentionally set here instead of pushHostContext because\n // pushHostContext gets called before we process the state hook, to avoid\n // a state mismatch in the event that something suspends.\n //\n // NOTE: This assumes that there cannot be nested transition providers,\n // because the only renderer that implements this feature is React DOM,\n // and forms cannot be nested. If we did support nested providers, then\n // we would need to push a context value even for host fibers that\n // haven't been upgraded yet.\n\n {\n HostTransitionContext._currentValue = newState;\n }\n\n {\n if (didReceiveUpdate) {\n if (current !== null) {\n const oldStateHook = current.memoizedState;\n const oldState = oldStateHook.memoizedState; // This uses regular equality instead of Object.is because we assume\n // that host transition state doesn't include NaN as a valid type.\n\n if (oldState !== newState) {\n propagateContextChange(workInProgress, HostTransitionContext, renderLanes);\n }\n }\n }\n }\n }\n }\n\n markRef$1(current, workInProgress);\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateHostHoistable(current, workInProgress, renderLanes) {\n markRef$1(current, workInProgress);\n const currentProps = current === null ? null : current.memoizedProps;\n const resource = workInProgress.memoizedState = getResource(workInProgress.type, currentProps, workInProgress.pendingProps);\n\n if (current === null) {\n if (!getIsHydrating() && resource === null) {\n // This is not a Resource Hoistable and we aren't hydrating so we construct the instance.\n workInProgress.stateNode = createHoistableInstance(workInProgress.type, workInProgress.pendingProps, getRootHostContainer(), workInProgress);\n }\n } // Resources never have reconciler managed children. It is possible for\n // the host implementation of getResource to consider children in the\n // resource construction but they will otherwise be discarded. In practice\n // this precludes all but the simplest children and Host specific warnings\n // should be implemented to warn when children are passsed when otherwise not\n // expected\n\n\n return null;\n}\n\nfunction updateHostSingleton(current, workInProgress, renderLanes) {\n pushHostContext(workInProgress);\n\n if (current === null) {\n claimHydratableSingleton(workInProgress);\n }\n\n const nextChildren = workInProgress.pendingProps.children;\n\n if (current === null && !getIsHydrating()) {\n // Similar to Portals we append Singleton children in the commit phase. So we\n // Track insertions even on mount.\n // TODO: Consider unifying this with how the root works.\n workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n } else {\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n }\n\n markRef$1(current, workInProgress);\n return workInProgress.child;\n}\n\nfunction updateHostText$1(current, workInProgress) {\n if (current === null) {\n tryToClaimNextHydratableTextInstance(workInProgress);\n } // Nothing to do here. This is terminal. We'll do the completion step\n // immediately after.\n\n\n return null;\n}\n\nfunction mountLazyComponent(_current, workInProgress, elementType, renderLanes) {\n resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n const props = workInProgress.pendingProps;\n const lazyComponent = elementType;\n const payload = lazyComponent._payload;\n const init = lazyComponent._init;\n let Component = init(payload); // Store the unwrapped component in the type.\n\n workInProgress.type = Component;\n const resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);\n const resolvedProps = resolveDefaultProps(Component, props);\n let child;\n\n switch (resolvedTag) {\n case FunctionComponent:\n {\n\n child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case ClassComponent:\n {\n\n child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case ForwardRef:\n {\n\n child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);\n return child;\n }\n\n case MemoComponent:\n {\n child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too\n renderLanes);\n return child;\n }\n }\n\n let hint = '';\n // because the fact that it's a separate type of work is an\n // implementation detail.\n\n\n throw Error(formatProdErrorMessage(306, Component, hint));\n}\n\nfunction mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {\n resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress); // Promote the fiber to a class and try rendering again.\n\n workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`\n // Push context providers early to prevent context stack mismatches.\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n let hasContext;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n constructClassInstance(workInProgress, Component, nextProps);\n mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n}\n\nfunction mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {\n resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n const props = workInProgress.pendingProps;\n let context;\n\n {\n const unmaskedContext = getUnmaskedContext(workInProgress, Component, false);\n context = getMaskedContext(workInProgress, unmaskedContext);\n }\n\n prepareToReadContext(workInProgress, renderLanes);\n let value;\n let hasId;\n\n {\n value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n hasId = checkDidRenderIdHook();\n }\n\n\n workInProgress.flags |= PerformedWork;\n\n if ( // Run these checks in production only if the flag is off.\n // Eventually we'll delete this branch altogether.\n typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n\n\n workInProgress.tag = ClassComponent; // Throw out any hooks that were used.\n\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.\n // During mounting we don't know the child context yet as the instance doesn't exist.\n // We will invalidate the child context in finishClassComponent() right after rendering.\n\n let hasContext = false;\n\n if (isContextProvider(Component)) {\n hasContext = true;\n pushContextProvider(workInProgress);\n } else {\n hasContext = false;\n }\n\n workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n initializeUpdateQueue(workInProgress);\n adoptClassInstance(workInProgress, value);\n mountClassInstance(workInProgress, Component, props, renderLanes);\n return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n } else {\n // Proceed under the assumption that this is a function component\n workInProgress.tag = FunctionComponent;\n\n if (getIsHydrating() && hasId) {\n pushMaterializedTreeId(workInProgress);\n }\n\n reconcileChildren(null, workInProgress, value, renderLanes);\n\n return workInProgress.child;\n }\n}\n\nconst SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: NoLane\n};\n\nfunction mountSuspenseOffscreenState(renderLanes) {\n return {\n baseLanes: renderLanes,\n cachePool: getSuspendedCache()\n };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n let cachePool = null;\n\n {\n const prevCachePool = prevOffscreenState.cachePool;\n\n if (prevCachePool !== null) {\n const parentCache = CacheContext._currentValue ;\n\n if (prevCachePool.parent !== parentCache) {\n // Detected a refresh in the parent. This overrides any previously\n // suspended cache.\n cachePool = {\n parent: parentCache,\n pool: parentCache\n };\n } else {\n // We can reuse the cache from last time. The only thing that would have\n // overridden it is a parent refresh, which we checked for above.\n cachePool = prevCachePool;\n }\n } else {\n // If there's no previous cache pool, grab the current one.\n cachePool = getSuspendedCache();\n }\n }\n\n return {\n baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes),\n cachePool\n };\n} // TODO: Probably should inline this back\n\n\nfunction shouldRemainOnFallback(current, workInProgress, renderLanes) {\n // If we're already showing a fallback, there are cases where we need to\n // remain on that fallback regardless of whether the content has resolved.\n // For example, SuspenseList coordinates when nested content appears.\n // TODO: For compatibility with offscreen prerendering, this should also check\n // whether the current fiber (if it exists) was visible in the previous tree.\n if (current !== null) {\n const suspenseState = current.memoizedState;\n\n if (suspenseState === null) {\n // Currently showing content. Don't hide it, even if ForceSuspenseFallback\n // is true. More precise name might be \"ForceRemainSuspenseFallback\".\n // Note: This is a factoring smell. Can't remain on a fallback if there's\n // no fallback to remain on.\n return false;\n }\n } // Not currently showing content. Consult the Suspense context.\n\n\n const suspenseContext = suspenseStackCursor.current;\n return hasSuspenseListContext(suspenseContext, ForceSuspenseFallback);\n}\n\nfunction getRemainingWorkInPrimaryTree(current, primaryTreeDidDefer, renderLanes) {\n let remainingLanes = current !== null ? removeLanes(current.childLanes, renderLanes) : NoLanes;\n\n if (primaryTreeDidDefer) {\n // A useDeferredValue hook spawned a deferred task inside the primary tree.\n // Ensure that we retry this component at the deferred priority.\n // TODO: We could make this a per-subtree value instead of a global one.\n // Would need to track it on the context stack somehow, similar to what\n // we'd have to do for resumable contexts.\n remainingLanes = mergeLanes(remainingLanes, peekDeferredLane());\n }\n\n return remainingLanes;\n}\n\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n const nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.\n\n let showFallback = false;\n const didSuspend = (workInProgress.flags & DidCapture) !== NoFlags$1;\n\n if (didSuspend || shouldRemainOnFallback(current)) {\n // Something in this boundary's subtree already suspended. Switch to\n // rendering the fallback children.\n showFallback = true;\n workInProgress.flags &= ~DidCapture;\n } // Check if the primary children spawned a deferred task (useDeferredValue)\n // during the first pass.\n\n\n const didPrimaryChildrenDefer = (workInProgress.flags & DidDefer) !== NoFlags$1;\n workInProgress.flags &= ~DidDefer; // OK, the next part is confusing. We're about to reconcile the Suspense\n // boundary's children. This involves some custom reconciliation logic. Two\n // main reasons this is so complicated.\n //\n // First, Legacy Mode has different semantics for backwards compatibility. The\n // primary tree will commit in an inconsistent state, so when we do the\n // second pass to render the fallback, we do some exceedingly, uh, clever\n // hacks to make that not totally break. Like transferring effects and\n // deletions from hidden tree. In Concurrent Mode, it's much simpler,\n // because we bailout on the primary tree completely and leave it in its old\n // state, no effects. Same as what we do for Offscreen (except that\n // Offscreen doesn't have the first render pass).\n //\n // Second is hydration. During hydration, the Suspense fiber has a slightly\n // different layout, where the child points to a dehydrated fragment, which\n // contains the DOM rendered by the server.\n //\n // Third, even if you set all that aside, Suspense is like error boundaries in\n // that we first we try to render one tree, and if that fails, we render again\n // and switch to a different tree. Like a try/catch block. So we have to track\n // which branch we're currently rendering. Ideally we would model this using\n // a stack.\n\n if (current === null) {\n // Initial mount\n // Special path for hydration\n // If we're currently hydrating, try to hydrate this boundary.\n if (getIsHydrating()) {\n // We must push the suspense handler context *before* attempting to\n // hydrate, to avoid a mismatch in case it errors.\n if (showFallback) {\n pushPrimaryTreeSuspenseHandler(workInProgress);\n } else {\n pushFallbackTreeSuspenseHandler(workInProgress);\n }\n\n tryToClaimNextHydratableSuspenseInstance(workInProgress); // This could've been a dehydrated suspense component.\n\n const suspenseState = workInProgress.memoizedState;\n\n if (suspenseState !== null) {\n const dehydrated = suspenseState.dehydrated;\n\n if (dehydrated !== null) {\n return mountDehydratedSuspenseComponent(workInProgress, dehydrated);\n }\n } // If hydration didn't succeed, fall through to the normal Suspense path.\n // To avoid a stack mismatch we need to pop the Suspense handler that we\n // pushed above. This will become less awkward when move the hydration\n // logic to its own fiber.\n\n\n popSuspenseHandler(workInProgress);\n }\n\n const nextPrimaryChildren = nextProps.children;\n const nextFallbackChildren = nextProps.fallback;\n\n if (showFallback) {\n pushFallbackTreeSuspenseHandler(workInProgress);\n const fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n const primaryChildFragment = workInProgress.child;\n primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n primaryChildFragment.childLanes = getRemainingWorkInPrimaryTree(current, didPrimaryChildrenDefer, renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER;\n\n return fallbackFragment;\n } else {\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n } else {\n // This is an update.\n // Special path for hydration\n const prevState = current.memoizedState;\n\n if (prevState !== null) {\n const dehydrated = prevState.dehydrated;\n\n if (dehydrated !== null) {\n return updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, didPrimaryChildrenDefer, nextProps, dehydrated, prevState, renderLanes);\n }\n }\n\n if (showFallback) {\n pushFallbackTreeSuspenseHandler(workInProgress);\n const nextFallbackChildren = nextProps.fallback;\n const nextPrimaryChildren = nextProps.children;\n const fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n const primaryChildFragment = workInProgress.child;\n const prevOffscreenState = current.child.memoizedState;\n primaryChildFragment.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n\n primaryChildFragment.childLanes = getRemainingWorkInPrimaryTree(current, didPrimaryChildrenDefer, renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return fallbackChildFragment;\n } else {\n pushPrimaryTreeSuspenseHandler(workInProgress);\n const nextPrimaryChildren = nextProps.children;\n const primaryChildFragment = updateSuspensePrimaryChildren(current, workInProgress, nextPrimaryChildren, renderLanes);\n workInProgress.memoizedState = null;\n return primaryChildFragment;\n }\n }\n}\n\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {\n const mode = workInProgress.mode;\n const primaryChildProps = {\n mode: 'visible',\n children: primaryChildren\n };\n const primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n primaryChildFragment.return = workInProgress;\n workInProgress.child = primaryChildFragment;\n return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n const mode = workInProgress.mode;\n const progressedPrimaryFragment = workInProgress.child;\n const primaryChildProps = {\n mode: 'hidden',\n children: primaryChildren\n };\n let primaryChildFragment;\n let fallbackChildFragment;\n\n if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n // In legacy mode, we commit the primary tree as if it successfully\n // completed, even though it's in an inconsistent state.\n primaryChildFragment = progressedPrimaryFragment;\n primaryChildFragment.childLanes = NoLanes;\n primaryChildFragment.pendingProps = primaryChildProps;\n\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n } else {\n primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n }\n\n primaryChildFragment.return = workInProgress;\n fallbackChildFragment.return = workInProgress;\n primaryChildFragment.sibling = fallbackChildFragment;\n workInProgress.child = primaryChildFragment;\n return fallbackChildFragment;\n}\n\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes) {\n // The props argument to `createFiberFromOffscreen` is `any` typed, so we use\n // this wrapper function to constrain it.\n return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n}\n\nfunction updateWorkInProgressOffscreenFiber(current, offscreenProps) {\n // The props argument to `createWorkInProgress` is `any` typed, so we use this\n // wrapper function to constrain it.\n return createWorkInProgress(current, offscreenProps);\n}\n\nfunction updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {\n const currentPrimaryChildFragment = current.child;\n const currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n const primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n mode: 'visible',\n children: primaryChildren\n });\n\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n primaryChildFragment.lanes = renderLanes;\n }\n\n primaryChildFragment.return = workInProgress;\n primaryChildFragment.sibling = null;\n\n if (currentFallbackChildFragment !== null) {\n // Delete the fallback child fragment\n const deletions = workInProgress.deletions;\n\n if (deletions === null) {\n workInProgress.deletions = [currentFallbackChildFragment];\n workInProgress.flags |= ChildDeletion;\n } else {\n deletions.push(currentFallbackChildFragment);\n }\n }\n\n workInProgress.child = primaryChildFragment;\n return primaryChildFragment;\n}\n\nfunction updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n const mode = workInProgress.mode;\n const currentPrimaryChildFragment = current.child;\n const currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n const primaryChildProps = {\n mode: 'hidden',\n children: primaryChildren\n };\n let primaryChildFragment;\n\n if ( // In legacy mode, we commit the primary tree as if it successfully\n // completed, even though it's in an inconsistent state.\n (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n // already cloned. In legacy mode, the only case where this isn't true is\n // when DevTools forces us to display a fallback; we skip the first render\n // pass entirely and go straight to rendering the fallback. (In Concurrent\n // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n // only codepath.)\n workInProgress.child !== currentPrimaryChildFragment) {\n const progressedPrimaryFragment = workInProgress.child;\n primaryChildFragment = progressedPrimaryFragment;\n primaryChildFragment.childLanes = NoLanes;\n primaryChildFragment.pendingProps = primaryChildProps;\n // However, since we're going to remain on the fallback, we no longer want\n // to delete it.\n\n\n workInProgress.deletions = null;\n } else {\n primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps); // Since we're reusing a current tree, we need to reuse the flags, too.\n // (We don't do this in legacy mode, because in legacy mode we don't re-use\n // the current tree; see previous branch.)\n\n primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n }\n\n let fallbackChildFragment;\n\n if (currentFallbackChildFragment !== null) {\n fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n } else {\n fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already\n // mounted but this is a new fiber.\n\n fallbackChildFragment.flags |= Placement;\n }\n\n fallbackChildFragment.return = workInProgress;\n primaryChildFragment.return = workInProgress;\n primaryChildFragment.sibling = fallbackChildFragment;\n workInProgress.child = primaryChildFragment;\n return fallbackChildFragment;\n}\n\nfunction retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, recoverableError) {\n // Falling back to client rendering. Because this has performance\n // implications, it's considered a recoverable error, even though the user\n // likely won't observe anything wrong with the UI.\n //\n // The error is passed in as an argument to enforce that every caller provide\n // a custom message, or explicitly opt out (currently the only path that opts\n // out is legacy mode; every concurrent path provides an error).\n if (recoverableError !== null) {\n queueHydrationError(recoverableError);\n } // This will add the old fiber to the deletion list\n\n\n reconcileChildFibers(workInProgress, current.child, null, renderLanes); // We're now not suspended nor dehydrated.\n\n const nextProps = workInProgress.pendingProps;\n const primaryChildren = nextProps.children;\n const primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Needs a placement effect because the parent (the Suspense boundary) already\n // mounted but this is a new fiber.\n\n primaryChildFragment.flags |= Placement;\n workInProgress.memoizedState = null;\n return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n const fiberMode = workInProgress.mode;\n const primaryChildProps = {\n mode: 'visible',\n children: primaryChildren\n };\n const primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n const fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes, null); // Needs a placement effect because the parent (the Suspense\n // boundary) already mounted but this is a new fiber.\n\n fallbackChildFragment.flags |= Placement;\n primaryChildFragment.return = workInProgress;\n fallbackChildFragment.return = workInProgress;\n primaryChildFragment.sibling = fallbackChildFragment;\n workInProgress.child = primaryChildFragment;\n\n if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n // We will have dropped the effect list which contains the\n // deletion. We need to reconcile to delete the current child.\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n }\n\n return fallbackChildFragment;\n}\n\nfunction mountDehydratedSuspenseComponent(workInProgress, suspenseInstance, renderLanes) {\n // During the first pass, we'll bail out and not drill into the children.\n // Instead, we'll leave the content in place and try to hydrate it later.\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n\n workInProgress.lanes = laneToLanes(SyncLane);\n } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n // This is a client-only boundary. Since we won't get any content from the server\n // for this, we need to schedule that at a higher priority based on when it would\n // have timed out. In theory we could render it in this pass but it would have the\n // wrong priority associated with it and will prevent hydration of parent path.\n // Instead, we'll leave work left on it to render it in a separate commit.\n // TODO This time should be the time at which the server rendered response that is\n // a parent to this boundary was displayed. However, since we currently don't have\n // a protocol to transfer that time, we'll just estimate it by using the current\n // time. This will mean that Suspense timeouts are slightly shifted to later than\n // they should be.\n // Schedule a normal pri update to render this content.\n workInProgress.lanes = laneToLanes(DefaultHydrationLane);\n } else {\n // We'll continue hydrating the rest at offscreen priority since we'll already\n // be showing the right content coming from the server, it is no rush.\n workInProgress.lanes = laneToLanes(OffscreenLane);\n }\n\n return null;\n}\n\nfunction updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, didPrimaryChildrenDefer, nextProps, suspenseInstance, suspenseState, renderLanes) {\n if (!didSuspend) {\n // This is the first render pass. Attempt to hydrate.\n pushPrimaryTreeSuspenseHandler(workInProgress); // We should never be hydrating at this point because it is the first pass,\n\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, null);\n }\n\n if (isSuspenseInstanceFallback(suspenseInstance)) {\n // This boundary is in a permanent fallback state. In this case, we'll never\n // get an update and we'll never be able to hydrate the final content. Let's just try the\n // client side render instead.\n let digest;\n let stack;\n\n {\n var _getSuspenseInstanceF2 = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);\n\n digest = _getSuspenseInstanceF2.digest;\n }\n\n let capturedValue = null; // TODO: Figure out a better signal than encoding a magic digest value.\n\n {\n let error;\n\n {\n error = Error(formatProdErrorMessage(419));\n }\n\n error.digest = digest;\n capturedValue = createCapturedValueFromError(error, digest, stack);\n }\n\n return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, capturedValue);\n }\n // any context has changed, we need to treat is as if the input might have changed.\n\n\n const hasContextChanged = includesSomeLane(renderLanes, current.childLanes);\n\n if (didReceiveUpdate || hasContextChanged) {\n // This boundary has changed since the first render. This means that we are now unable to\n // hydrate it. We might still be able to hydrate it using a higher priority lane.\n const root = getWorkInProgressRoot();\n\n if (root !== null) {\n const attemptHydrationAtLane = getBumpedLaneForHydration(root, renderLanes);\n\n if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n // Intentionally mutating since this render will get interrupted. This\n // is one of the very rare times where we mutate the current tree\n // during the render phase.\n suspenseState.retryLane = attemptHydrationAtLane;\n enqueueConcurrentRenderForLane(current, attemptHydrationAtLane);\n scheduleUpdateOnFiber(root, current, attemptHydrationAtLane); // Throw a special object that signals to the work loop that it should\n // interrupt the current render.\n //\n // Because we're inside a React-only execution stack, we don't\n // strictly need to throw here — we could instead modify some internal\n // work loop state. But using an exception means we don't need to\n // check for this case on every iteration of the work loop. So doing\n // it this way moves the check out of the fast path.\n\n throw SelectiveHydrationException;\n }\n } // If we did not selectively hydrate, we'll continue rendering without\n // hydrating. Mark this tree as suspended to prevent it from committing\n // outside a transition.\n //\n // This path should only happen if the hydration lane already suspended.\n // Currently, it also happens during sync updates because there is no\n // hydration lane for sync updates.\n // TODO: We should ideally have a sync hydration lane that we can apply to do\n // a pass where we hydrate this subtree in place using the previous Context and then\n // reapply the update afterwards.\n\n\n if (isSuspenseInstancePending(suspenseInstance)) ; else {\n renderDidSuspendDelayIfPossible();\n }\n\n return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, null);\n } else if (isSuspenseInstancePending(suspenseInstance)) {\n // This component is still pending more data from the server, so we can't hydrate its\n // content. We treat it as if this component suspended itself. It might seem as if\n // we could just try to render it client-side instead. However, this will perform a\n // lot of unnecessary work and is unlikely to complete since it often will suspend\n // on missing data anyway. Additionally, the server might be able to render more\n // than we can on the client yet. In that case we'd end up with more fallback states\n // on the client than if we just leave it alone. If the server times out or errors\n // these should update this boundary to the permanent Fallback state instead.\n // Mark it as having captured (i.e. suspended).\n workInProgress.flags |= DidCapture; // Leave the child in place. I.e. the dehydrated fragment.\n\n workInProgress.child = current.child; // Register a callback to retry this boundary once the server has sent the result.\n\n const retry = retryDehydratedSuspenseBoundary.bind(null, current);\n registerSuspenseInstanceRetry(suspenseInstance, retry);\n return null;\n } else {\n // This is the first attempt.\n reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress, suspenseInstance, suspenseState.treeContext);\n const primaryChildren = nextProps.children;\n const primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Mark the children as hydrating. This is a fast path to know whether this\n // tree is part of a hydrating tree. This is used to determine if a child\n // node has fully mounted yet, and for scheduling event replaying.\n // Conceptually this is similar to Placement in that a new subtree is\n // inserted into the React tree here. It just happens to not need DOM\n // mutations because it already exists.\n\n primaryChildFragment.flags |= Hydrating;\n return primaryChildFragment;\n }\n } else {\n // This is the second render pass. We already attempted to hydrated, but\n // something either suspended or errored.\n if (workInProgress.flags & ForceClientRender) {\n // Something errored during hydration. Try again without hydrating.\n pushPrimaryTreeSuspenseHandler(workInProgress);\n workInProgress.flags &= ~ForceClientRender;\n const capturedValue = createCapturedValueFromError(Error(formatProdErrorMessage(422)));\n return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, capturedValue);\n } else if (workInProgress.memoizedState !== null) {\n // Something suspended and we should still be in dehydrated mode.\n // Leave the existing child in place.\n // Push to avoid a mismatch\n pushFallbackTreeSuspenseHandler(workInProgress);\n workInProgress.child = current.child; // The dehydrated completion pass expects this flag to be there\n // but the normal suspense pass doesn't.\n\n workInProgress.flags |= DidCapture;\n return null;\n } else {\n // Suspended but we should no longer be in dehydrated mode.\n // Therefore we now have to render the fallback.\n pushFallbackTreeSuspenseHandler(workInProgress);\n const nextPrimaryChildren = nextProps.children;\n const nextFallbackChildren = nextProps.fallback;\n const fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n const primaryChildFragment = workInProgress.child;\n primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n primaryChildFragment.childLanes = getRemainingWorkInPrimaryTree(current, didPrimaryChildrenDefer, renderLanes);\n workInProgress.memoizedState = SUSPENDED_MARKER;\n return fallbackChildFragment;\n }\n }\n}\n\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n const alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n }\n\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\n\nfunction propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {\n // Mark any Suspense boundaries with fallbacks as having work to do.\n // If they were previously forced into fallbacks, they may now be able\n // to unblock.\n let node = firstChild;\n\n while (node !== null) {\n if (node.tag === SuspenseComponent) {\n const state = node.memoizedState;\n\n if (state !== null) {\n scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n }\n } else if (node.tag === SuspenseListComponent) {\n // If the tail is hidden there might not be an Suspense boundaries\n // to schedule work on. In this case we have to schedule it on the\n // list itself.\n // We don't have to traverse to the children of the list since\n // the list will propagate the change when it rerenders.\n scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n } else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === workInProgress) {\n return;\n } // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n\n while (node.sibling === null) {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n if (node.return === null || node.return === workInProgress) {\n return;\n }\n\n node = node.return;\n } // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\n\nfunction findLastContentRow(firstChild) {\n // This is going to find the last row among these children that is already\n // showing content on the screen, as opposed to being in fallback state or\n // new. If a row has multiple Suspense boundaries, any of them being in the\n // fallback state, counts as the whole row being in a fallback state.\n // Note that the \"rows\" will be workInProgress, but any nested children\n // will still be current since we haven't rendered them yet. The mounted\n // order may not be the same as the new order. We use the new order.\n let row = firstChild;\n let lastContentRow = null;\n\n while (row !== null) {\n const currentRow = row.alternate; // New rows can't be content rows.\n\n if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n lastContentRow = row;\n }\n\n row = row.sibling;\n }\n\n return lastContentRow;\n}\n\nfunction initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode) {\n const renderState = workInProgress.memoizedState;\n\n if (renderState === null) {\n workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode\n };\n } else {\n // We can reuse the existing object from previous renders.\n renderState.isBackwards = isBackwards;\n renderState.rendering = null;\n renderState.renderingStartTime = 0;\n renderState.last = lastContentRow;\n renderState.tail = tail;\n renderState.tailMode = tailMode;\n }\n} // This can end up rendering this component multiple passes.\n// The first pass splits the children fibers into two sets. A head and tail.\n// We first render the head. If anything is in fallback state, we do another\n// pass through beginWork to rerender all children (including the tail) with\n// the force suspend context. If the first render didn't have anything in\n// in fallback state. Then we render each row in the tail one-by-one.\n// That happens in the completeWork phase without going back to beginWork.\n\n\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n const nextProps = workInProgress.pendingProps;\n const revealOrder = nextProps.revealOrder;\n const tailMode = nextProps.tail;\n const newChildren = nextProps.children;\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n let suspenseContext = suspenseStackCursor.current;\n const shouldForceFallback = hasSuspenseListContext(suspenseContext, ForceSuspenseFallback);\n\n if (shouldForceFallback) {\n suspenseContext = setShallowSuspenseListContext(suspenseContext, ForceSuspenseFallback);\n workInProgress.flags |= DidCapture;\n } else {\n const didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags$1;\n\n if (didSuspendBefore) {\n // If we previously forced a fallback, we need to schedule work\n // on any nested boundaries to let them know to try to render\n // again. This is the same as context updating.\n propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);\n }\n\n suspenseContext = setDefaultShallowSuspenseListContext(suspenseContext);\n }\n\n pushSuspenseListContext(workInProgress, suspenseContext);\n\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n // In legacy mode, SuspenseList doesn't work so we just\n // use make it a noop by treating it as the default revealOrder.\n workInProgress.memoizedState = null;\n } else {\n switch (revealOrder) {\n case 'forwards':\n {\n const lastContentRow = findLastContentRow(workInProgress.child);\n let tail;\n\n if (lastContentRow === null) {\n // The whole list is part of the tail.\n // TODO: We could fast path by just rendering the tail now.\n tail = workInProgress.child;\n workInProgress.child = null;\n } else {\n // Disconnect the tail rows after the content row.\n // We're going to render them separately later.\n tail = lastContentRow.sibling;\n lastContentRow.sibling = null;\n }\n\n initSuspenseListRenderState(workInProgress, false, // isBackwards\n tail, lastContentRow, tailMode);\n break;\n }\n\n case 'backwards':\n {\n // We're going to find the first row that has existing content.\n // At the same time we're going to reverse the list of everything\n // we pass in the meantime. That's going to be our tail in reverse\n // order.\n let tail = null;\n let row = workInProgress.child;\n workInProgress.child = null;\n\n while (row !== null) {\n const currentRow = row.alternate; // New rows can't be content rows.\n\n if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n // This is the beginning of the main content.\n workInProgress.child = row;\n break;\n }\n\n const nextRow = row.sibling;\n row.sibling = tail;\n tail = row;\n row = nextRow;\n } // TODO: If workInProgress.child is null, we can continue on the tail immediately.\n\n\n initSuspenseListRenderState(workInProgress, true, // isBackwards\n tail, null, // last\n tailMode);\n break;\n }\n\n case 'together':\n {\n initSuspenseListRenderState(workInProgress, false, // isBackwards\n null, // tail\n null, // last\n undefined);\n break;\n }\n\n default:\n {\n // The default reveal order is the same as not having\n // a boundary.\n workInProgress.memoizedState = null;\n }\n }\n }\n\n return workInProgress.child;\n}\n\nfunction updatePortalComponent(current, workInProgress, renderLanes) {\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n const nextChildren = workInProgress.pendingProps;\n\n if (current === null) {\n // Portals are special because we don't append the children during mount\n // but at commit. Therefore we need to track insertions which the normal\n // flow doesn't do during mount. This doesn't happen at the root because\n // the root always starts with a \"current\" with a null child.\n // TODO: Consider unifying this with how the root works.\n workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n } else {\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n }\n\n return workInProgress.child;\n}\n\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n let context;\n\n {\n context = workInProgress.type._context;\n }\n\n const newProps = workInProgress.pendingProps;\n const oldProps = workInProgress.memoizedProps;\n const newValue = newProps.value;\n\n pushProvider(workInProgress, context, newValue);\n\n {\n if (oldProps !== null) {\n const oldValue = oldProps.value;\n\n if (objectIs(oldValue, newValue)) {\n // No change. Bailout early if children are the same.\n if (oldProps.children === newProps.children && !hasContextChanged()) {\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n } else {\n // The context value changed. Search for matching consumers and schedule\n // them to update.\n propagateContextChange(workInProgress, context, renderLanes);\n }\n }\n }\n\n const newChildren = newProps.children;\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction updateContextConsumer(current, workInProgress, renderLanes) {\n let context;\n\n {\n context = workInProgress.type;\n }\n\n const newProps = workInProgress.pendingProps;\n const render = newProps.children;\n\n prepareToReadContext(workInProgress, renderLanes);\n const newValue = readContext(context);\n\n let newChildren;\n\n {\n newChildren = render(newValue);\n }\n\n\n workInProgress.flags |= PerformedWork;\n reconcileChildren(current, workInProgress, newChildren, renderLanes);\n return workInProgress.child;\n}\n\nfunction markWorkInProgressReceivedUpdate() {\n didReceiveUpdate = true;\n}\n\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n if (current !== null) {\n // A lazy component only mounts if it suspended inside a non-\n // concurrent tree, in an inconsistent state. We want to treat it like\n // a new mount, even though an empty version of it already committed.\n // Disconnect the alternate pointers.\n current.alternate = null;\n workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n workInProgress.flags |= Placement;\n }\n }\n}\n\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n if (current !== null) {\n // Reuse previous dependencies\n workInProgress.dependencies = current.dependencies;\n }\n\n markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.\n\n if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {\n // The children don't have any work either. We can skip them.\n // TODO: Once we add back resuming, we should check if the children are\n // a work-in-progress set. If so, we need to transfer their effects.\n {\n return null;\n }\n } // This fiber doesn't have work, but its subtree does. Clone the child\n // fibers and continue.\n\n\n cloneChildFibers(current, workInProgress);\n return workInProgress.child;\n}\n\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n // Before performing an early bailout, we must check if there are pending\n // updates or context.\n const updateLanes = current.lanes;\n\n if (includesSomeLane(updateLanes, renderLanes)) {\n return true;\n } // No pending update, but because context is propagated lazily, we need\n\n return false;\n}\n\nfunction attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes) {\n // This fiber does not have any pending work. Bailout without entering\n // the begin phase. There's still some bookkeeping we that needs to be done\n // in this optimized path, mostly pushing stuff onto the stack.\n switch (workInProgress.tag) {\n case HostRoot:\n pushHostRootContext(workInProgress);\n\n {\n const cache = current.memoizedState.cache;\n pushCacheProvider(workInProgress, cache);\n }\n\n resetHydrationState();\n break;\n\n case HostSingleton:\n case HostComponent:\n pushHostContext(workInProgress);\n break;\n\n case ClassComponent:\n {\n const Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n pushContextProvider(workInProgress);\n }\n\n break;\n }\n\n case HostPortal:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n\n case ContextProvider:\n {\n const newValue = workInProgress.memoizedProps.value;\n let context;\n\n {\n context = workInProgress.type._context;\n }\n\n pushProvider(workInProgress, context, newValue);\n break;\n }\n\n case Profiler:\n\n break;\n\n case SuspenseComponent:\n {\n const state = workInProgress.memoizedState;\n\n if (state !== null) {\n if (state.dehydrated !== null) {\n // We're not going to render the children, so this is just to maintain\n // push/pop symmetry\n pushPrimaryTreeSuspenseHandler(workInProgress); // We know that this component will suspend again because if it has\n // been unsuspended it has committed as a resolved Suspense component.\n // If it needs to be retried, it should have work scheduled on it.\n\n workInProgress.flags |= DidCapture; // We should never render the children of a dehydrated boundary until we\n // upgrade it. We return null instead of bailoutOnAlreadyFinishedWork.\n\n return null;\n } // If this boundary is currently timed out, we need to decide\n // whether to retry the primary children, or to skip over it and\n // go straight to the fallback. Check the priority of the primary\n // child fragment.\n\n\n const primaryChildFragment = workInProgress.child;\n const primaryChildLanes = primaryChildFragment.childLanes;\n\n if (includesSomeLane(renderLanes, primaryChildLanes)) {\n // The primary children have pending work. Use the normal path\n // to attempt to render the primary children again.\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n } else {\n // The primary child fragment does not have pending work marked\n // on it\n pushPrimaryTreeSuspenseHandler(workInProgress); // The primary children do not have pending work with sufficient\n // priority. Bailout.\n\n const child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n\n if (child !== null) {\n // The fallback children have pending work. Skip over the\n // primary children and work on the fallback.\n return child.sibling;\n } else {\n // Note: We can return `null` here because we already checked\n // whether there were nested context consumers, via the call to\n // `bailoutOnAlreadyFinishedWork` above.\n return null;\n }\n }\n } else {\n pushPrimaryTreeSuspenseHandler(workInProgress);\n }\n\n break;\n }\n\n case SuspenseListComponent:\n {\n const didSuspendBefore = (current.flags & DidCapture) !== NoFlags$1;\n let hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n if (didSuspendBefore) {\n if (hasChildWork) {\n // If something was in fallback state last time, and we have all the\n // same children then we're still in progressive loading state.\n // Something might get unblocked by state updates or retries in the\n // tree which will affect the tail. So we need to use the normal\n // path to compute the correct tail.\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n } // If none of the children had any work, that means that none of\n // them got retried so they'll still be blocked in the same way\n // as before. We can fast bail out.\n\n\n workInProgress.flags |= DidCapture;\n } // If nothing suspended before and we're rendering the same children,\n // then the tail doesn't matter. Anything new that suspends will work\n // in the \"together\" mode, so we can continue from the state we had.\n\n\n const renderState = workInProgress.memoizedState;\n\n if (renderState !== null) {\n // Reset to the \"together\" mode in case we've started a different\n // update in the past but didn't complete it.\n renderState.rendering = null;\n renderState.tail = null;\n renderState.lastEffect = null;\n }\n\n pushSuspenseListContext(workInProgress, suspenseStackCursor.current);\n\n if (hasChildWork) {\n break;\n } else {\n // If none of the children had any work, that means that none of\n // them got retried so they'll still be blocked in the same way\n // as before. We can fast bail out.\n return null;\n }\n }\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n // Need to check if the tree still needs to be deferred. This is\n // almost identical to the logic used in the normal update path,\n // so we'll just enter that. The only difference is we'll bail out\n // at the next level instead of this one, because the child props\n // have not changed. Which is fine.\n // TODO: Probably should refactor `beginWork` to split the bailout\n // path from the normal path. I'm tempted to do a labeled break here\n // but I won't :)\n workInProgress.lanes = NoLanes;\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n }\n\n case CacheComponent:\n {\n {\n const cache = current.memoizedState.cache;\n pushCacheProvider(workInProgress, cache);\n }\n\n break;\n }\n }\n\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\n\nfunction beginWork$1(current, workInProgress, renderLanes) {\n\n if (current !== null) {\n const oldProps = current.memoizedProps;\n const newProps = workInProgress.pendingProps;\n\n if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:\n false)) {\n // If props or context changed, mark the fiber as having performed work.\n // This may be unset if the props are determined to be equal later (memo).\n didReceiveUpdate = true;\n } else {\n // Neither props nor legacy context changes. Check if there's a pending\n // update or context change.\n const hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n // may not be work scheduled on `current`, so we check for this flag.\n (workInProgress.flags & DidCapture) === NoFlags$1) {\n // No pending updates or context. Bail out now.\n didReceiveUpdate = false;\n return attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes);\n }\n\n if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags$1) {\n // This is a special case that only exists for legacy mode.\n // See https://github.com/facebook/react/pull/19216.\n didReceiveUpdate = true;\n } else {\n // An update was scheduled on this fiber, but there are no new props\n // nor legacy context. Set this to false. If an update queue or context\n // consumer produces a changed value, it will set this to true. Otherwise,\n // the component will assume the children have not changed and bail out.\n didReceiveUpdate = false;\n }\n }\n } else {\n didReceiveUpdate = false;\n\n if (getIsHydrating() && isForkedChild(workInProgress)) {\n // Check if this child belongs to a list of muliple children in\n // its parent.\n //\n // In a true multi-threaded implementation, we would render children on\n // parallel threads. This would represent the beginning of a new render\n // thread for this subtree.\n //\n // We only use this for id generation during hydration, which is why the\n // logic is located in this special branch.\n const slotIndex = workInProgress.index;\n const numberOfForks = getForksAtLevel();\n pushTreeId(workInProgress, numberOfForks, slotIndex);\n }\n } // Before entering the begin phase, clear pending update priority.\n // TODO: This assumes that we're about to evaluate the component and process\n // the update queue. However, there's an exception: SimpleMemoComponent\n // sometimes bails out later in the begin phase. This indicates that we should\n // move this assignment out of the common path and into each branch.\n\n\n workInProgress.lanes = NoLanes;\n\n switch (workInProgress.tag) {\n case IndeterminateComponent:\n {\n return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);\n }\n\n case LazyComponent:\n {\n const elementType = workInProgress.elementType;\n return mountLazyComponent(current, workInProgress, elementType, renderLanes);\n }\n\n case FunctionComponent:\n {\n const Component = workInProgress.type;\n const unresolvedProps = workInProgress.pendingProps;\n const resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n return updateFunctionComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n }\n\n case ClassComponent:\n {\n const Component = workInProgress.type;\n const unresolvedProps = workInProgress.pendingProps;\n const resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n return updateClassComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n }\n\n case HostRoot:\n return updateHostRoot(current, workInProgress, renderLanes);\n\n case HostHoistable:\n {\n return updateHostHoistable(current, workInProgress);\n }\n\n // Fall through\n\n case HostSingleton:\n {\n return updateHostSingleton(current, workInProgress, renderLanes);\n }\n\n // Fall through\n\n case HostComponent:\n return updateHostComponent$1(current, workInProgress, renderLanes);\n\n case HostText:\n return updateHostText$1(current, workInProgress);\n\n case SuspenseComponent:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n\n case HostPortal:\n return updatePortalComponent(current, workInProgress, renderLanes);\n\n case ForwardRef:\n {\n const type = workInProgress.type;\n const unresolvedProps = workInProgress.pendingProps;\n const resolvedProps = workInProgress.elementType === type ? unresolvedProps : resolveDefaultProps(type, unresolvedProps);\n return updateForwardRef(current, workInProgress, type, resolvedProps, renderLanes);\n }\n\n case Fragment:\n return updateFragment(current, workInProgress, renderLanes);\n\n case Mode:\n return updateMode(current, workInProgress, renderLanes);\n\n case Profiler:\n return updateProfiler(current, workInProgress, renderLanes);\n\n case ContextProvider:\n return updateContextProvider(current, workInProgress, renderLanes);\n\n case ContextConsumer:\n return updateContextConsumer(current, workInProgress, renderLanes);\n\n case MemoComponent:\n {\n const type = workInProgress.type;\n const unresolvedProps = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.\n\n let resolvedProps = resolveDefaultProps(type, unresolvedProps);\n resolvedProps = resolveDefaultProps(type.type, resolvedProps);\n return updateMemoComponent(current, workInProgress, type, resolvedProps, renderLanes);\n }\n\n case SimpleMemoComponent:\n {\n return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, renderLanes);\n }\n\n case IncompleteClassComponent:\n {\n const Component = workInProgress.type;\n const unresolvedProps = workInProgress.pendingProps;\n const resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n return mountIncompleteClassComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n }\n\n case SuspenseListComponent:\n {\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n }\n\n case ScopeComponent:\n {\n\n break;\n }\n\n case OffscreenComponent:\n {\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n }\n\n case LegacyHiddenComponent:\n {\n\n break;\n }\n\n case CacheComponent:\n {\n {\n return updateCacheComponent(current, workInProgress, renderLanes);\n }\n }\n }\n\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\n\nconst valueCursor = createCursor(null);\n\nlet currentlyRenderingFiber = null;\nlet lastContextDependency = null;\nlet lastFullyObservedContext = null;\nfunction resetContextDependencies() {\n // This is called right before React yields execution, to ensure `readContext`\n // cannot be called outside the render phase.\n currentlyRenderingFiber = null;\n lastContextDependency = null;\n lastFullyObservedContext = null;\n}\nfunction pushProvider(providerFiber, context, nextValue) {\n {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n }\n}\nfunction popProvider(context, providerFiber) {\n const currentValue = valueCursor.current;\n\n {\n context._currentValue = currentValue;\n }\n\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n // Update the child lanes of all the ancestors, including the alternates.\n let node = parent;\n\n while (node !== null) {\n const alternate = node.alternate;\n\n if (!isSubsetOfLanes(node.childLanes, renderLanes)) {\n node.childLanes = mergeLanes(node.childLanes, renderLanes);\n\n if (alternate !== null) {\n alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n }\n } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {\n alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n } else ;\n\n if (node === propagationRoot) {\n break;\n }\n\n node = node.return;\n }\n}\nfunction propagateContextChange(workInProgress, context, renderLanes) {\n {\n propagateContextChange_eager(workInProgress, context, renderLanes);\n }\n}\n\nfunction propagateContextChange_eager(workInProgress, context, renderLanes) {\n\n let fiber = workInProgress.child;\n\n if (fiber !== null) {\n // Set the return pointer of the child to the work-in-progress fiber.\n fiber.return = workInProgress;\n }\n\n while (fiber !== null) {\n let nextFiber; // Visit this fiber.\n\n const list = fiber.dependencies;\n\n if (list !== null) {\n nextFiber = fiber.child;\n let dependency = list.firstContext;\n\n while (dependency !== null) {\n // Check if the context matches.\n if (dependency.context === context) {\n // Match! Schedule an update on this fiber.\n if (fiber.tag === ClassComponent) {\n // Schedule a force update on the work-in-progress.\n const lane = pickArbitraryLane(renderLanes);\n const update = createUpdate(lane);\n update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the\n // update to the current fiber, too, which means it will persist even if\n // this render is thrown away. Since it's a race condition, not sure it's\n // worth fixing.\n // Inlined `enqueueUpdate` to remove interleaved update check\n\n const updateQueue = fiber.updateQueue;\n\n if (updateQueue === null) ; else {\n const sharedQueue = updateQueue.shared;\n const pending = sharedQueue.pending;\n\n if (pending === null) {\n // This is the first update. Create a circular list.\n update.next = update;\n } else {\n update.next = pending.next;\n pending.next = update;\n }\n\n sharedQueue.pending = update;\n }\n }\n\n fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n const alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n }\n\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, workInProgress); // Mark the updated lanes on the list, too.\n\n list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the\n // dependency list.\n\n break;\n }\n\n dependency = dependency.next;\n }\n } else if (fiber.tag === ContextProvider) {\n // Don't scan deeper if this is a matching provider\n nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n } else if (fiber.tag === DehydratedFragment) {\n // If a dehydrated suspense boundary is in this subtree, we don't know\n // if it will have any context consumers in it. The best we can do is\n // mark it as having updates.\n const parentSuspense = fiber.return;\n\n if (parentSuspense === null) {\n throw Error(formatProdErrorMessage(341));\n }\n\n parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes);\n const alternate = parentSuspense.alternate;\n\n if (alternate !== null) {\n alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n } // This is intentionally passing this fiber as the parent\n // because we want to schedule this fiber as having work\n // on its children. We'll use the childLanes on\n // this fiber to indicate that a context has changed.\n\n\n scheduleContextWorkOnParentPath(parentSuspense, renderLanes, workInProgress);\n nextFiber = fiber.sibling;\n } else {\n // Traverse down.\n nextFiber = fiber.child;\n }\n\n if (nextFiber !== null) {\n // Set the return pointer of the child to the work-in-progress fiber.\n nextFiber.return = fiber;\n } else {\n // No child. Traverse to next sibling.\n nextFiber = fiber;\n\n while (nextFiber !== null) {\n if (nextFiber === workInProgress) {\n // We're back to the root of this subtree. Exit.\n nextFiber = null;\n break;\n }\n\n const sibling = nextFiber.sibling;\n\n if (sibling !== null) {\n // Set the return pointer of the sibling to the work-in-progress fiber.\n sibling.return = nextFiber.return;\n nextFiber = sibling;\n break;\n } // No more siblings. Traverse up.\n\n\n nextFiber = nextFiber.return;\n }\n }\n\n fiber = nextFiber;\n }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n currentlyRenderingFiber = workInProgress;\n lastContextDependency = null;\n lastFullyObservedContext = null;\n const dependencies = workInProgress.dependencies;\n\n if (dependencies !== null) {\n {\n const firstContext = dependencies.firstContext;\n\n if (firstContext !== null) {\n if (includesSomeLane(dependencies.lanes, renderLanes)) {\n // Context list has a pending update. Mark that this fiber performed work.\n markWorkInProgressReceivedUpdate();\n } // Reset the work-in-progress list\n\n\n dependencies.firstContext = null;\n }\n }\n }\n}\nfunction readContext(context) {\n\n return readContextForConsumer(currentlyRenderingFiber, context);\n}\nfunction readContextDuringReconcilation(consumer, context, renderLanes) {\n if (currentlyRenderingFiber === null) {\n prepareToReadContext(consumer, renderLanes);\n }\n\n return readContextForConsumer(consumer, context);\n}\n\nfunction readContextForConsumer(consumer, context) {\n const value = context._currentValue ;\n\n if (lastFullyObservedContext === context) ; else {\n const contextItem = {\n context: context,\n memoizedValue: value,\n next: null\n };\n\n if (lastContextDependency === null) {\n if (consumer === null) {\n throw Error(formatProdErrorMessage(308));\n } // This is the first dependency for this component. Create a new list.\n\n\n lastContextDependency = contextItem;\n consumer.dependencies = {\n lanes: NoLanes,\n firstContext: contextItem\n };\n } else {\n // Append a new context item.\n lastContextDependency = lastContextDependency.next = contextItem;\n }\n }\n\n return value;\n}\n\n// replace it with a lightweight shim that only has the features we use.\n\nconst AbortControllerLocal = typeof AbortController !== 'undefined' ? AbortController : // $FlowFixMe[missing-this-annot]\n// $FlowFixMe[prop-missing]\nfunction AbortControllerShim() {\n const listeners = [];\n const signal = this.signal = {\n aborted: false,\n addEventListener: (type, listener) => {\n listeners.push(listener);\n }\n };\n\n this.abort = () => {\n signal.aborted = true;\n listeners.forEach(listener => listener());\n };\n} ; // Intentionally not named imports because Rollup would\n// use dynamic dispatch for CommonJS interop named imports.\n\nconst scheduleCallback$1 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority;\nconst CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n // We don't use Consumer/Provider for Cache components. So we'll cheat.\n Consumer: null,\n Provider: null,\n // We'll initialize these at the root.\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n} ;\n// for retaining the cache once it is in use (retainCache), and releasing the cache\n// once it is no longer needed (releaseCache).\n\n\nfunction createCache() {\n\n const cache = {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n return cache;\n}\nfunction retainCache(cache) {\n\n cache.refCount++;\n} // Cleanup a cache instance, potentially freeing it if there are no more references\n\nfunction releaseCache(cache) {\n\n cache.refCount--;\n\n if (cache.refCount === 0) {\n scheduleCallback$1(NormalPriority, () => {\n cache.controller.abort();\n });\n }\n}\nfunction pushCacheProvider(workInProgress, cache) {\n\n pushProvider(workInProgress, CacheContext, cache);\n}\nfunction popCacheProvider(workInProgress, cache) {\n\n popProvider(CacheContext);\n}\n\nconst ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;\nfunction requestCurrentTransition() {\n const transition = ReactCurrentBatchConfig$2.transition;\n\n if (transition !== null) {\n // Whenever a transition update is scheduled, register a callback on the\n // transition object so we can get the return value of the scope function.\n transition._callbacks.add(handleAsyncAction);\n }\n\n return transition;\n}\n\nfunction handleAsyncAction(transition, thenable) {\n {\n // This is an async action.\n entangleAsyncAction(transition, thenable);\n }\n}\n\nfunction notifyTransitionCallbacks(transition, returnValue) {\n const callbacks = transition._callbacks;\n callbacks.forEach(callback => callback(transition, returnValue));\n} // When retrying a Suspense/Offscreen boundary, we restore the cache that was\n// used during the previous render by placing it here, on the stack.\n\nconst resumedCache = createCursor(null); // During the render/synchronous commit phase, we don't actually process the\n\nfunction peekCacheFromPool() {\n // If we're rendering inside a Suspense boundary that is currently hidden,\n // we should use the same cache that we used during the previous render, if\n // one exists.\n\n\n const cacheResumedFromPreviousRender = resumedCache.current;\n\n if (cacheResumedFromPreviousRender !== null) {\n return cacheResumedFromPreviousRender;\n } // Otherwise, check the root's cache pool.\n\n\n const root = getWorkInProgressRoot();\n const cacheFromRootCachePool = root.pooledCache;\n return cacheFromRootCachePool;\n}\n\nfunction requestCacheFromPool(renderLanes) {\n // Similar to previous function, except if there's not already a cache in the\n // pool, we allocate a new one.\n const cacheFromPool = peekCacheFromPool();\n\n if (cacheFromPool !== null) {\n return cacheFromPool;\n } // Create a fresh cache and add it to the root cache pool. A cache can have\n // multiple owners:\n // - A cache pool that lives on the FiberRoot. This is where all fresh caches\n // are originally created (TODO: except during refreshes, until we implement\n // this correctly). The root takes ownership immediately when the cache is\n // created. Conceptually, root.pooledCache is an Option<Arc<Cache>> (owned),\n // and the return value of this function is a &Arc<Cache> (borrowed).\n // - One of several fiber types: host root, cache boundary, suspense\n // component. These retain and release in the commit phase.\n\n\n const root = getWorkInProgressRoot();\n const freshCache = createCache();\n root.pooledCache = freshCache;\n retainCache(freshCache);\n\n if (freshCache !== null) {\n root.pooledCacheLanes |= renderLanes;\n }\n\n return freshCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool, newTransitions) {\n {\n if (prevCachePool === null) {\n push(resumedCache, resumedCache.current);\n } else {\n push(resumedCache, prevCachePool.pool);\n }\n }\n}\nfunction popTransition(workInProgress, current) {\n if (current !== null) {\n\n {\n pop(resumedCache);\n }\n }\n}\nfunction getSuspendedCache() {\n // cache that would have been used to render fresh data during this render,\n // if there was any, so that we can resume rendering with the same cache when\n // we receive more data.\n\n\n const cacheFromPool = peekCacheFromPool();\n\n if (cacheFromPool === null) {\n return null;\n }\n\n return {\n // We must also save the parent, so that when we resume we can detect\n // a refresh.\n parent: CacheContext._currentValue ,\n pool: cacheFromPool\n };\n}\nfunction getOffscreenDeferredCache() {\n\n const cacheFromPool = peekCacheFromPool();\n\n if (cacheFromPool === null) {\n return null;\n }\n\n return {\n // We must also store the parent, so that when we resume we can detect\n // a refresh.\n parent: CacheContext._currentValue ,\n pool: cacheFromPool\n };\n}\n\n/**\n * Tag the fiber with an update effect. This turns a Placement into\n * a PlacementAndUpdate.\n */\n\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= Update;\n}\n\nfunction markRef(workInProgress) {\n workInProgress.flags |= Ref | RefStatic;\n}\n\nfunction appendAllChildren(parent, workInProgress, needsVisibilityToggle, isHidden) {\n {\n // We only have the top Fiber that was created but we need recurse down its\n // children to find all the terminal nodes.\n let node = workInProgress.child;\n\n while (node !== null) {\n if (node.tag === HostComponent || node.tag === HostText) {\n appendInitialChild(parent, node.stateNode);\n } else if (node.tag === HostPortal || (node.tag === HostSingleton )) ; else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === workInProgress) {\n return;\n } // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n\n while (node.sibling === null) {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n if (node.return === null || node.return === workInProgress) {\n return;\n }\n\n node = node.return;\n } // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n} // An unfortunate fork of appendAllChildren because we have two different parent types.\n\nfunction updateHostComponent(current, workInProgress, type, newProps, renderLanes) {\n {\n // If we have an alternate, that means this is an update and we need to\n // schedule a side-effect to do the updates.\n const oldProps = current.memoizedProps;\n\n if (oldProps === newProps) {\n // In mutation mode, this is sufficient for a bailout because\n // we won't touch this node even if children changed.\n return;\n }\n\n markUpdate(workInProgress);\n }\n} // This function must be called at the very end of the complete phase, because\n// it might throw to suspend, and if the resource immediately loads, the work\n// loop will resume rendering as if the work-in-progress completed. So it must\n// fully complete.\n// TODO: This should ideally move to begin phase, but currently the instance is\n// not created until the complete phase. For our existing use cases, host nodes\n// that suspend don't have children, so it doesn't matter. But that might not\n// always be true in the future.\n\n\nfunction preloadInstanceAndSuspendIfNeeded(workInProgress, type, props, renderLanes) {\n {\n // If this flag was set previously, we can remove it. The flag\n // represents whether this particular set of props might ever need to\n // suspend. The safest thing to do is for maySuspendCommit to always\n // return true, but if the renderer is reasonably confident that the\n // underlying resource won't be evicted, it can return false as a\n // performance optimization.\n workInProgress.flags &= ~MaySuspendCommit;\n return;\n } // Mark this fiber with a flag. This gets set on all host instances\n}\n\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource, type, props, renderLanes) {\n // This is a fork of preloadInstanceAndSuspendIfNeeded, but for resources.\n if (!mayResourceSuspendCommit(resource)) {\n workInProgress.flags &= ~MaySuspendCommit;\n return;\n }\n\n workInProgress.flags |= MaySuspendCommit;\n const rootRenderLanes = getWorkInProgressRootRenderLanes();\n\n if (!includesOnlyNonUrgentLanes(rootRenderLanes)) ; else {\n const isReady = preloadResource(resource);\n\n if (!isReady) {\n if (shouldRemainOnPreviousScreen()) {\n workInProgress.flags |= ShouldSuspendCommit;\n } else {\n suspendCommit();\n }\n }\n }\n}\n\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n const wakeables = retryQueue;\n\n if (wakeables !== null) {\n // Schedule an effect to attach a retry listener to the promise.\n // TODO: Move to passive phase\n workInProgress.flags |= Update;\n } else {\n // This boundary suspended, but no wakeables were added to the retry\n // queue. Check if the renderer suspended commit. If so, this means\n // that once the fallback is committed, we can immediately retry\n // rendering again, because rendering wasn't actually blocked. Only\n // the commit phase.\n // TODO: Consider a model where we always schedule an immediate retry, even\n // for normal Suspense. That way the retry can partially render up to the\n // first thing that suspends.\n if (workInProgress.flags & ScheduleRetry) {\n const retryLane = // TODO: This check should probably be moved into claimNextRetryLane\n // I also suspect that we need some further consolidation of offscreen\n // and retry lanes.\n workInProgress.tag !== OffscreenComponent ? claimNextRetryLane() : OffscreenLane;\n workInProgress.lanes = mergeLanes(workInProgress.lanes, retryLane);\n }\n }\n}\n\nfunction updateHostText(current, workInProgress, oldText, newText) {\n {\n // If the text differs, mark it as an update. All the work in done in commitWork.\n if (oldText !== newText) {\n markUpdate(workInProgress);\n }\n }\n}\n\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (getIsHydrating()) {\n // If we're hydrating, we should consume as many items as we can\n // so we don't leave any behind.\n return;\n }\n\n switch (renderState.tailMode) {\n case 'hidden':\n {\n // Any insertions at the end of the tail list after this point\n // should be invisible. If there are already mounted boundaries\n // anything before them are not considered for collapsing.\n // Therefore we need to go through the whole tail to find if\n // there are any.\n let tailNode = renderState.tail;\n let lastTailNode = null;\n\n while (tailNode !== null) {\n if (tailNode.alternate !== null) {\n lastTailNode = tailNode;\n }\n\n tailNode = tailNode.sibling;\n } // Next we're simply going to delete all insertions after the\n // last rendered item.\n\n\n if (lastTailNode === null) {\n // All remaining items in the tail are insertions.\n renderState.tail = null;\n } else {\n // Detach the insertion after the last node that was already\n // inserted.\n lastTailNode.sibling = null;\n }\n\n break;\n }\n\n case 'collapsed':\n {\n // Any insertions at the end of the tail list after this point\n // should be invisible. If there are already mounted boundaries\n // anything before them are not considered for collapsing.\n // Therefore we need to go through the whole tail to find if\n // there are any.\n let tailNode = renderState.tail;\n let lastTailNode = null;\n\n while (tailNode !== null) {\n if (tailNode.alternate !== null) {\n lastTailNode = tailNode;\n }\n\n tailNode = tailNode.sibling;\n } // Next we're simply going to delete all insertions after the\n // last rendered item.\n\n\n if (lastTailNode === null) {\n // All remaining items in the tail are insertions.\n if (!hasRenderedATailFallback && renderState.tail !== null) {\n // We suspended during the head. We want to show at least one\n // row at the tail. So we'll keep on and cut off the rest.\n renderState.tail.sibling = null;\n } else {\n renderState.tail = null;\n }\n } else {\n // Detach the insertion after the last node that was already\n // inserted.\n lastTailNode.sibling = null;\n }\n\n break;\n }\n }\n}\n\nfunction bubbleProperties(completedWork) {\n const didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n let newChildLanes = NoLanes;\n let subtreeFlags = NoFlags$1;\n\n if (!didBailout) {\n // Bubble up the earliest expiration time.\n {\n let child = completedWork.child;\n\n while (child !== null) {\n newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n subtreeFlags |= child.subtreeFlags;\n subtreeFlags |= child.flags; // Update the return pointer so the tree is consistent. This is a code\n // smell because it assumes the commit phase is never concurrent with\n // the render phase. Will address during refactor to alternate model.\n\n child.return = completedWork;\n child = child.sibling;\n }\n }\n\n completedWork.subtreeFlags |= subtreeFlags;\n } else {\n // Bubble up the earliest expiration time.\n {\n let child = completedWork.child;\n\n while (child !== null) {\n newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n // so we should bubble those up even during a bailout. All the other\n // flags have a lifetime only of a single render + commit, so we should\n // ignore them.\n\n subtreeFlags |= child.subtreeFlags & StaticMask;\n subtreeFlags |= child.flags & StaticMask; // Update the return pointer so the tree is consistent. This is a code\n // smell because it assumes the commit phase is never concurrent with\n // the render phase. Will address during refactor to alternate model.\n\n child.return = completedWork;\n child = child.sibling;\n }\n }\n\n completedWork.subtreeFlags |= subtreeFlags;\n }\n\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\n\nfunction completeDehydratedSuspenseBoundary(current, workInProgress, nextState) {\n if (hasUnhydratedTailNodes() && (workInProgress.mode & ConcurrentMode) !== NoMode && (workInProgress.flags & DidCapture) === NoFlags$1) {\n warnIfUnhydratedTailNodes();\n resetHydrationState();\n workInProgress.flags |= ForceClientRender | DidCapture;\n return false;\n }\n\n const wasHydrated = popHydrationState(workInProgress);\n\n if (nextState !== null && nextState.dehydrated !== null) {\n // We might be inside a hydration state the first time we're picking up this\n // Suspense boundary, and also after we've reentered it for further hydration.\n if (current === null) {\n if (!wasHydrated) {\n throw Error(formatProdErrorMessage(318));\n }\n\n prepareToHydrateHostSuspenseInstance(workInProgress);\n bubbleProperties(workInProgress);\n\n return false;\n } else {\n // We might have reentered this boundary to hydrate it. If so, we need to reset the hydration\n // state since we're now exiting out of it. popHydrationState doesn't do that for us.\n resetHydrationState();\n\n if ((workInProgress.flags & DidCapture) === NoFlags$1) {\n // This boundary did not suspend so it's now hydrated and unsuspended.\n workInProgress.memoizedState = null;\n } // If nothing suspended, we need to schedule an effect to mark this boundary\n // as having hydrated so events know that they're free to be invoked.\n // It's also a signal to replay events and the suspense callback.\n // If something suspended, schedule an effect to attach retry listeners.\n // So we might as well always mark this.\n\n\n workInProgress.flags |= Update;\n bubbleProperties(workInProgress);\n\n return false;\n }\n } else {\n // Successfully completed this tree. If this was a forced client render,\n // there may have been recoverable errors during first hydration\n // attempt. If so, add them to a queue so we can log them in the\n // commit phase.\n upgradeHydrationErrorsToRecoverable(); // Fall through to normal Suspense path\n\n return true;\n }\n}\n\nfunction completeWork(current, workInProgress, renderLanes) {\n const newProps = workInProgress.pendingProps; // Note: This intentionally doesn't check if we're hydrating because comparing\n // to the current tree provider fiber is just as fast and less error-prone.\n // Ideally we would have a special version of the work loop only\n // for hydration.\n\n popTreeContext(workInProgress);\n\n switch (workInProgress.tag) {\n case IndeterminateComponent:\n case LazyComponent:\n case SimpleMemoComponent:\n case FunctionComponent:\n case ForwardRef:\n case Fragment:\n case Mode:\n case Profiler:\n case ContextConsumer:\n case MemoComponent:\n bubbleProperties(workInProgress);\n return null;\n\n case ClassComponent:\n {\n const Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n popContext();\n }\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n case HostRoot:\n {\n const fiberRoot = workInProgress.stateNode;\n\n {\n let previousCache = null;\n\n if (current !== null) {\n previousCache = current.memoizedState.cache;\n }\n\n const cache = workInProgress.memoizedState.cache;\n\n if (cache !== previousCache) {\n // Run passive effects to retain/release the cache.\n workInProgress.flags |= Passive$1;\n }\n\n popCacheProvider();\n }\n popHostContainer();\n popTopLevelContextObject();\n\n if (fiberRoot.pendingContext) {\n fiberRoot.context = fiberRoot.pendingContext;\n fiberRoot.pendingContext = null;\n }\n\n if (current === null || current.child === null) {\n // If we hydrated, pop so that we can delete any remaining children\n // that weren't hydrated.\n const wasHydrated = popHydrationState(workInProgress);\n\n if (wasHydrated) {\n // If we hydrated, then we'll need to schedule an update for\n // the commit side-effects on the root.\n markUpdate(workInProgress);\n } else {\n if (current !== null) {\n const prevState = current.memoizedState;\n\n if ( // Check if this is a client root\n !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n (workInProgress.flags & ForceClientRender) !== NoFlags$1) {\n // Schedule an effect to clear this container at the start of the\n // next commit. This handles the case of React rendering into a\n // container with previous children. It's also safe to do for\n // updates too, because current.child would only be null if the\n // previous render was null (so the container would already\n // be empty).\n workInProgress.flags |= Snapshot; // If this was a forced client render, there may have been\n // recoverable errors during first hydration attempt. If so, add\n // them to a queue so we can log them in the commit phase.\n\n upgradeHydrationErrorsToRecoverable();\n }\n }\n }\n }\n bubbleProperties(workInProgress);\n\n return null;\n }\n\n case HostHoistable:\n {\n {\n const nextResource = workInProgress.memoizedState;\n\n if (current === null) {\n // We are mounting and must Update this Hoistable in this commit\n // @TODO refactor this block to create the instance here in complete\n // phase if we are not hydrating.\n markUpdate(workInProgress);\n\n if (workInProgress.ref !== null) {\n markRef(workInProgress);\n }\n\n if (nextResource !== null) {\n // This is a Hoistable Resource\n // This must come at the very end of the complete phase.\n bubbleProperties(workInProgress);\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource);\n return null;\n } else {\n // This is a Hoistable Instance\n // This must come at the very end of the complete phase.\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(workInProgress);\n return null;\n }\n } else {\n // We are updating.\n const currentResource = current.memoizedState;\n\n if (nextResource !== currentResource) {\n // We are transitioning to, from, or between Hoistable Resources\n // and require an update\n markUpdate(workInProgress);\n }\n\n if (current.ref !== workInProgress.ref) {\n markRef(workInProgress);\n }\n\n if (nextResource !== null) {\n // This is a Hoistable Resource\n // This must come at the very end of the complete phase.\n bubbleProperties(workInProgress);\n\n if (nextResource === currentResource) {\n workInProgress.flags &= ~MaySuspendCommit;\n } else {\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource);\n }\n\n return null;\n } else {\n // This is a Hoistable Instance\n // We may have props to update on the Hoistable instance.\n {\n const oldProps = current.memoizedProps;\n\n if (oldProps !== newProps) {\n markUpdate(workInProgress);\n }\n } // This must come at the very end of the complete phase.\n\n\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(workInProgress);\n return null;\n }\n }\n } // Fall through\n\n }\n\n case HostSingleton:\n {\n {\n popHostContext(workInProgress);\n const rootContainerInstance = getRootHostContainer();\n const type = workInProgress.type;\n\n if (current !== null && workInProgress.stateNode != null) {\n {\n const oldProps = current.memoizedProps;\n\n if (oldProps !== newProps) {\n markUpdate(workInProgress);\n }\n }\n\n if (current.ref !== workInProgress.ref) {\n markRef(workInProgress);\n }\n } else {\n if (!newProps) {\n if (workInProgress.stateNode === null) {\n throw Error(formatProdErrorMessage(166));\n } // This can happen when we abort work.\n\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n const currentHostContext = getHostContext();\n const wasHydrated = popHydrationState(workInProgress);\n let instance;\n\n if (wasHydrated) {\n // We ignore the boolean indicating there is an updateQueue because\n // it is used only to set text children and HostSingletons do not\n // use them.\n prepareToHydrateHostInstance(workInProgress, currentHostContext);\n instance = workInProgress.stateNode;\n } else {\n instance = resolveSingletonInstance(type, newProps, rootContainerInstance);\n workInProgress.stateNode = instance;\n markUpdate(workInProgress);\n }\n\n if (workInProgress.ref !== null) {\n // If there is a ref on a host node we need to schedule a callback\n markRef(workInProgress);\n }\n }\n\n bubbleProperties(workInProgress);\n return null;\n } // Fall through\n\n }\n\n case HostComponent:\n {\n popHostContext(workInProgress);\n const type = workInProgress.type;\n\n if (current !== null && workInProgress.stateNode != null) {\n updateHostComponent(current, workInProgress, type, newProps);\n\n if (current.ref !== workInProgress.ref) {\n markRef(workInProgress);\n }\n } else {\n if (!newProps) {\n if (workInProgress.stateNode === null) {\n throw Error(formatProdErrorMessage(166));\n } // This can happen when we abort work.\n\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n const currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context\n // \"stack\" as the parent. Then append children as we go in beginWork\n // or completeWork depending on whether we want to add them top->down or\n // bottom->up. Top->down is faster in IE11.\n\n const wasHydrated = popHydrationState(workInProgress);\n\n if (wasHydrated) {\n // TODO: Move this and createInstance step into the beginPhase\n // to consolidate.\n prepareToHydrateHostInstance(workInProgress, currentHostContext);\n } else {\n const rootContainerInstance = getRootHostContainer();\n const instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress); // TODO: For persistent renderers, we should pass children as part\n // of the initial instance creation\n\n appendAllChildren(instance, workInProgress);\n workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.\n // (eg DOM renderer supports auto-focus for certain elements).\n // Make sure such renderers get scheduled for later work.\n\n if (finalizeInitialChildren(instance, type, newProps)) {\n markUpdate(workInProgress);\n }\n }\n\n if (workInProgress.ref !== null) {\n // If there is a ref on a host node we need to schedule a callback\n markRef(workInProgress);\n }\n }\n\n bubbleProperties(workInProgress); // This must come at the very end of the complete phase, because it might\n // throw to suspend, and if the resource immediately loads, the work loop\n // will resume rendering as if the work-in-progress completed. So it must\n // fully complete.\n\n preloadInstanceAndSuspendIfNeeded(workInProgress);\n return null;\n }\n\n case HostText:\n {\n const newText = newProps;\n\n if (current && workInProgress.stateNode != null) {\n const oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need\n // to schedule a side-effect to do the updates.\n\n updateHostText(current, workInProgress, oldText, newText);\n } else {\n if (typeof newText !== 'string') {\n if (workInProgress.stateNode === null) {\n throw Error(formatProdErrorMessage(166));\n } // This can happen when we abort work.\n\n }\n\n const rootContainerInstance = getRootHostContainer();\n const currentHostContext = getHostContext();\n const wasHydrated = popHydrationState(workInProgress);\n\n if (wasHydrated) {\n if (prepareToHydrateHostTextInstance(workInProgress)) {\n markUpdate(workInProgress);\n }\n } else {\n workInProgress.stateNode = createTextInstance(newText, rootContainerInstance, currentHostContext, workInProgress);\n }\n }\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n case SuspenseComponent:\n {\n popSuspenseHandler(workInProgress);\n const nextState = workInProgress.memoizedState; // Special path for dehydrated boundaries. We may eventually move this\n // to its own fiber type so that we can add other kinds of hydration\n // boundaries that aren't associated with a Suspense tree. In anticipation\n // of such a refactor, all the hydration logic is contained in\n // this branch.\n\n if (current === null || current.memoizedState !== null && current.memoizedState.dehydrated !== null) {\n const fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current, workInProgress, nextState);\n\n if (!fallthroughToNormalSuspensePath) {\n if (workInProgress.flags & ForceClientRender) {\n // Special case. There were remaining unhydrated nodes. We treat\n // this as a mismatch. Revert to client rendering.\n return workInProgress;\n } else {\n // Did not finish hydrating, either because this is the initial\n // render or because something suspended.\n return null;\n }\n } // Continue with the normal Suspense path.\n\n }\n\n if ((workInProgress.flags & DidCapture) !== NoFlags$1) {\n // Something suspended. Re-render with the fallback children.\n workInProgress.lanes = renderLanes; // Do not reset the effect list.\n\n\n return workInProgress;\n }\n\n const nextDidTimeout = nextState !== null;\n const prevDidTimeout = current !== null && current.memoizedState !== null;\n\n if (nextDidTimeout) {\n const offscreenFiber = workInProgress.child;\n let previousCache = null;\n\n if (offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null && offscreenFiber.alternate.memoizedState.cachePool !== null) {\n previousCache = offscreenFiber.alternate.memoizedState.cachePool.pool;\n }\n\n let cache = null;\n\n if (offscreenFiber.memoizedState !== null && offscreenFiber.memoizedState.cachePool !== null) {\n cache = offscreenFiber.memoizedState.cachePool.pool;\n }\n\n if (cache !== previousCache) {\n // Run passive effects to retain/release the cache.\n offscreenFiber.flags |= Passive$1;\n }\n } // If the suspended state of the boundary changes, we need to schedule\n // a passive effect, which is when we process the transitions\n\n\n if (nextDidTimeout !== prevDidTimeout) {\n // an effect to toggle the subtree's visibility. When we switch from\n // fallback -> primary, the inner Offscreen fiber schedules this effect\n // as part of its normal complete phase. But when we switch from\n // primary -> fallback, the inner Offscreen fiber does not have a complete\n // phase. So we need to schedule its effect here.\n //\n // We also use this flag to connect/disconnect the effects, but the same\n // logic applies: when re-connecting, the Offscreen fiber's complete\n // phase will handle scheduling the effect. It's only when the fallback\n // is active that we have to do anything special.\n\n\n if (nextDidTimeout) {\n const offscreenFiber = workInProgress.child;\n offscreenFiber.flags |= Visibility;\n }\n }\n\n const retryQueue = workInProgress.updateQueue;\n scheduleRetryEffect(workInProgress, retryQueue);\n\n bubbleProperties(workInProgress);\n\n return null;\n }\n\n case HostPortal:\n popHostContainer();\n\n if (current === null) {\n preparePortalMount(workInProgress.stateNode.containerInfo);\n }\n\n bubbleProperties(workInProgress);\n return null;\n\n case ContextProvider:\n // Pop provider fiber\n let context;\n\n {\n context = workInProgress.type._context;\n }\n\n popProvider(context);\n bubbleProperties(workInProgress);\n return null;\n\n case IncompleteClassComponent:\n {\n // Same as class component case. I put it down here so that the tags are\n // sequential to ensure this switch is compiled to a jump table.\n const Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n popContext();\n }\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n case SuspenseListComponent:\n {\n popSuspenseListContext();\n const renderState = workInProgress.memoizedState;\n\n if (renderState === null) {\n // We're running in the default, \"independent\" mode.\n // We don't do anything in this mode.\n bubbleProperties(workInProgress);\n return null;\n }\n\n let didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags$1;\n const renderedTail = renderState.rendering;\n\n if (renderedTail === null) {\n // We just rendered the head.\n if (!didSuspendAlready) {\n // This is the first pass. We need to figure out if anything is still\n // suspended in the rendered set.\n // If new content unsuspended, but there's still some content that\n // didn't. Then we need to do a second pass that forces everything\n // to keep showing their fallbacks.\n // We might be suspended if something in this render pass suspended, or\n // something in the previous committed pass suspended. Otherwise,\n // there's no chance so we can skip the expensive call to\n // findFirstSuspended.\n const cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags$1);\n\n if (!cannotBeSuspended) {\n let row = workInProgress.child;\n\n while (row !== null) {\n const suspended = findFirstSuspended(row);\n\n if (suspended !== null) {\n didSuspendAlready = true;\n workInProgress.flags |= DidCapture;\n cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as\n // part of the second pass. In that case nothing will subscribe to\n // its thenables. Instead, we'll transfer its thenables to the\n // SuspenseList so that it can retry if they resolve.\n // There might be multiple of these in the list but since we're\n // going to wait for all of them anyway, it doesn't really matter\n // which ones gets to ping. In theory we could get clever and keep\n // track of how many dependencies remain but it gets tricky because\n // in the meantime, we can add/remove/change items and dependencies.\n // We might bail out of the loop before finding any but that\n // doesn't matter since that means that the other boundaries that\n // we did find already has their listeners attached.\n\n const retryQueue = suspended.updateQueue;\n workInProgress.updateQueue = retryQueue;\n scheduleRetryEffect(workInProgress, retryQueue); // Rerender the whole list, but this time, we'll force fallbacks\n // to stay in place.\n // Reset the effect flags before doing the second pass since that's now invalid.\n // Reset the child fibers to their original state.\n\n workInProgress.subtreeFlags = NoFlags$1;\n resetChildFibers(workInProgress, renderLanes); // Set up the Suspense List Context to force suspense and\n // immediately rerender the children.\n\n pushSuspenseListContext(workInProgress, setShallowSuspenseListContext(suspenseStackCursor.current, ForceSuspenseFallback)); // Don't bubble properties in this case.\n\n return workInProgress.child;\n }\n\n row = row.sibling;\n }\n }\n\n if (renderState.tail !== null && now() > getRenderTargetTime()) {\n // We have already passed our CPU deadline but we still have rows\n // left in the tail. We'll just give up further attempts to render\n // the main content and only render fallbacks.\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true;\n cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n // to get it started back up to attempt the next item. While in terms\n // of priority this work has the same priority as this current render,\n // it's not part of the same transition once the transition has\n // committed. If it's sync, we still want to yield so that it can be\n // painted. Conceptually, this is really the same as pinging.\n // We can use any RetryLane even if it's the one currently rendering\n // since we're leaving it behind on this node.\n\n workInProgress.lanes = SomeRetryLane;\n }\n } else {\n cutOffTailIfNeeded(renderState, false);\n } // Next we're going to render the tail.\n\n } else {\n // Append the rendered row to the child list.\n if (!didSuspendAlready) {\n const suspended = findFirstSuspended(renderedTail);\n\n if (suspended !== null) {\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't\n // get lost if this row ends up dropped during a second pass.\n\n const retryQueue = suspended.updateQueue;\n workInProgress.updateQueue = retryQueue;\n scheduleRetryEffect(workInProgress, retryQueue);\n cutOffTailIfNeeded(renderState, true); // This might have been modified.\n\n if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.\n ) {\n // We're done.\n bubbleProperties(workInProgress);\n return null;\n }\n } else if ( // The time it took to render last row is greater than the remaining\n // time we have to render. So rendering one more row would likely\n // exceed it.\n now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {\n // We have now passed our CPU deadline and we'll just give up further\n // attempts to render the main content and only render fallbacks.\n // The assumption is that this is usually faster.\n workInProgress.flags |= DidCapture;\n didSuspendAlready = true;\n cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n // to get it started back up to attempt the next item. While in terms\n // of priority this work has the same priority as this current render,\n // it's not part of the same transition once the transition has\n // committed. If it's sync, we still want to yield so that it can be\n // painted. Conceptually, this is really the same as pinging.\n // We can use any RetryLane even if it's the one currently rendering\n // since we're leaving it behind on this node.\n\n workInProgress.lanes = SomeRetryLane;\n }\n }\n\n if (renderState.isBackwards) {\n // The effect list of the backwards tail will have been added\n // to the end. This breaks the guarantee that life-cycles fire in\n // sibling order but that isn't a strong guarantee promised by React.\n // Especially since these might also just pop in during future commits.\n // Append to the beginning of the list.\n renderedTail.sibling = workInProgress.child;\n workInProgress.child = renderedTail;\n } else {\n const previousSibling = renderState.last;\n\n if (previousSibling !== null) {\n previousSibling.sibling = renderedTail;\n } else {\n workInProgress.child = renderedTail;\n }\n\n renderState.last = renderedTail;\n }\n }\n\n if (renderState.tail !== null) {\n // We still have tail rows to render.\n // Pop a row.\n const next = renderState.tail;\n renderState.rendering = next;\n renderState.tail = next.sibling;\n renderState.renderingStartTime = now();\n next.sibling = null; // Restore the context.\n // TODO: We can probably just avoid popping it instead and only\n // setting it the first time we go from not suspended to suspended.\n\n let suspenseContext = suspenseStackCursor.current;\n\n if (didSuspendAlready) {\n suspenseContext = setShallowSuspenseListContext(suspenseContext, ForceSuspenseFallback);\n } else {\n suspenseContext = setDefaultShallowSuspenseListContext(suspenseContext);\n }\n\n pushSuspenseListContext(workInProgress, suspenseContext); // Do a pass over the next row.\n // Don't bubble properties in this case.\n\n return next;\n }\n\n bubbleProperties(workInProgress);\n return null;\n }\n\n case ScopeComponent:\n {\n\n break;\n }\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n popSuspenseHandler(workInProgress);\n popHiddenContext();\n const nextState = workInProgress.memoizedState;\n const nextIsHidden = nextState !== null; // Schedule a Visibility effect if the visibility has changed\n\n {\n if (current !== null) {\n const prevState = current.memoizedState;\n const prevIsHidden = prevState !== null;\n\n if (prevIsHidden !== nextIsHidden) {\n workInProgress.flags |= Visibility;\n }\n } else {\n // On initial mount, we only need a Visibility effect if the tree\n // is hidden.\n if (nextIsHidden) {\n workInProgress.flags |= Visibility;\n }\n }\n }\n\n if (!nextIsHidden || (workInProgress.mode & ConcurrentMode) === NoMode) {\n bubbleProperties(workInProgress);\n } else {\n // Don't bubble properties for hidden children unless we're rendering\n // at offscreen priority.\n if (includesSomeLane(renderLanes, OffscreenLane) && // Also don't bubble if the tree suspended\n (workInProgress.flags & DidCapture) === NoLanes) {\n bubbleProperties(workInProgress); // Check if there was an insertion or update in the hidden subtree.\n // If so, we need to hide those nodes in the commit phase, so\n // schedule a visibility effect.\n\n if (workInProgress.subtreeFlags & (Placement | Update)) {\n workInProgress.flags |= Visibility;\n }\n }\n }\n\n const offscreenQueue = workInProgress.updateQueue;\n\n if (offscreenQueue !== null) {\n const retryQueue = offscreenQueue.retryQueue;\n scheduleRetryEffect(workInProgress, retryQueue);\n }\n\n {\n let previousCache = null;\n\n if (current !== null && current.memoizedState !== null && current.memoizedState.cachePool !== null) {\n previousCache = current.memoizedState.cachePool.pool;\n }\n\n let cache = null;\n\n if (workInProgress.memoizedState !== null && workInProgress.memoizedState.cachePool !== null) {\n cache = workInProgress.memoizedState.cachePool.pool;\n }\n\n if (cache !== previousCache) {\n // Run passive effects to retain/release the cache.\n workInProgress.flags |= Passive$1;\n }\n }\n\n popTransition(workInProgress, current);\n return null;\n }\n\n case CacheComponent:\n {\n {\n let previousCache = null;\n\n if (current !== null) {\n previousCache = current.memoizedState.cache;\n }\n\n const cache = workInProgress.memoizedState.cache;\n\n if (cache !== previousCache) {\n // Run passive effects to retain/release the cache.\n workInProgress.flags |= Passive$1;\n }\n\n popCacheProvider();\n bubbleProperties(workInProgress);\n }\n\n return null;\n }\n\n case TracingMarkerComponent:\n {\n\n return null;\n }\n }\n\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\n\nfunction unwindWork(current, workInProgress, renderLanes) {\n // Note: This intentionally doesn't check if we're hydrating because comparing\n // to the current tree provider fiber is just as fast and less error-prone.\n // Ideally we would have a special version of the work loop only\n // for hydration.\n popTreeContext(workInProgress);\n\n switch (workInProgress.tag) {\n case ClassComponent:\n {\n const Component = workInProgress.type;\n\n if (isContextProvider(Component)) {\n popContext();\n }\n\n const flags = workInProgress.flags;\n\n if (flags & ShouldCapture) {\n workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n\n return workInProgress;\n }\n\n return null;\n }\n\n case HostRoot:\n {\n\n {\n popCacheProvider();\n }\n popHostContainer();\n popTopLevelContextObject();\n const flags = workInProgress.flags;\n\n if ((flags & ShouldCapture) !== NoFlags$1 && (flags & DidCapture) === NoFlags$1) {\n // There was an error during render that wasn't captured by a suspense\n // boundary. Do a second pass on the root to unmount the children.\n workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n return workInProgress;\n } // We unwound to the root without completing it. Exit.\n\n\n return null;\n }\n\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n {\n // TODO: popHydrationState\n popHostContext(workInProgress);\n return null;\n }\n\n case SuspenseComponent:\n {\n popSuspenseHandler(workInProgress);\n const suspenseState = workInProgress.memoizedState;\n\n if (suspenseState !== null && suspenseState.dehydrated !== null) {\n if (workInProgress.alternate === null) {\n throw Error(formatProdErrorMessage(340));\n }\n\n resetHydrationState();\n }\n\n const flags = workInProgress.flags;\n\n if (flags & ShouldCapture) {\n workInProgress.flags = flags & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n return workInProgress;\n }\n\n return null;\n }\n\n case SuspenseListComponent:\n {\n popSuspenseListContext(); // SuspenseList doesn't actually catch anything. It should've been\n // caught by a nested boundary. If not, it should bubble through.\n\n return null;\n }\n\n case HostPortal:\n popHostContainer();\n return null;\n\n case ContextProvider:\n let context;\n\n {\n context = workInProgress.type._context;\n }\n\n popProvider(context);\n return null;\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n {\n popSuspenseHandler(workInProgress);\n popHiddenContext();\n popTransition(workInProgress, current);\n const flags = workInProgress.flags;\n\n if (flags & ShouldCapture) {\n workInProgress.flags = flags & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n return workInProgress;\n }\n\n return null;\n }\n\n case CacheComponent:\n {\n popCacheProvider();\n }\n\n return null;\n\n case TracingMarkerComponent:\n\n return null;\n\n default:\n return null;\n }\n}\n\nfunction unwindInterruptedWork(current, interruptedWork, renderLanes) {\n // Note: This intentionally doesn't check if we're hydrating because comparing\n // to the current tree provider fiber is just as fast and less error-prone.\n // Ideally we would have a special version of the work loop only\n // for hydration.\n popTreeContext(interruptedWork);\n\n switch (interruptedWork.tag) {\n case ClassComponent:\n {\n const childContextTypes = interruptedWork.type.childContextTypes;\n\n if (childContextTypes !== null && childContextTypes !== undefined) {\n popContext();\n }\n\n break;\n }\n\n case HostRoot:\n {\n\n {\n popCacheProvider();\n }\n popHostContainer();\n popTopLevelContextObject();\n break;\n }\n\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n {\n popHostContext(interruptedWork);\n break;\n }\n\n case HostPortal:\n popHostContainer();\n break;\n\n case SuspenseComponent:\n popSuspenseHandler(interruptedWork);\n break;\n\n case SuspenseListComponent:\n popSuspenseListContext();\n break;\n\n case ContextProvider:\n let context;\n\n {\n context = interruptedWork.type._context;\n }\n\n popProvider(context);\n break;\n\n case OffscreenComponent:\n case LegacyHiddenComponent:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n popTransition(interruptedWork, current);\n break;\n\n case CacheComponent:\n {\n popCacheProvider();\n }\n\n break;\n }\n}\n\nfunction invokeGuardedCallbackImpl(name, func, context) {\n {\n // $FlowFixMe[method-unbinding]\n const funcArgs = Array.prototype.slice.call(arguments, 3);\n\n try {\n // $FlowFixMe[incompatible-call] Flow doesn't understand the arguments splicing.\n func.apply(context, funcArgs);\n } catch (error) {\n this.onError(error);\n }\n }\n}\n\nlet hasError = false;\nlet caughtError = null; // Used by event system to capture/rethrow the first error.\n\nlet hasRethrowError = false;\nlet rethrowError = null;\nconst reporter = {\n onError(error) {\n hasError = true;\n caughtError = error;\n }\n\n};\n/**\n * Call a function while guarding against errors that happens within it.\n * Returns an error if it throws, otherwise null.\n *\n * In production, this is implemented using a try-catch. The reason we don't\n * use a try-catch directly is so that we can swap out a different\n * implementation in DEV mode.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n hasError = false;\n caughtError = null;\n invokeGuardedCallbackImpl.apply(reporter, arguments);\n}\n/**\n * Same as invokeGuardedCallback, but instead of returning an error, it stores\n * it in a global so it can be rethrown by `rethrowCaughtError` later.\n * TODO: See if caughtError and rethrowError can be unified.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n invokeGuardedCallback.apply(this, arguments);\n\n if (hasError) {\n const error = clearCaughtError();\n\n if (!hasRethrowError) {\n hasRethrowError = true;\n rethrowError = error;\n }\n }\n}\n/**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n\nfunction rethrowCaughtError() {\n if (hasRethrowError) {\n const error = rethrowError;\n hasRethrowError = false;\n rethrowError = null;\n throw error;\n }\n}\nfunction clearCaughtError() {\n if (hasError) {\n const error = caughtError;\n hasError = false;\n caughtError = null;\n return error;\n } else {\n throw Error(formatProdErrorMessage(198));\n }\n}\n\n// Allows us to avoid traversing the return path to find the nearest Offscreen ancestor.\n\n\nlet offscreenSubtreeIsHidden = false;\nlet offscreenSubtreeWasHidden = false;\nconst PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;\nlet nextEffect = null; // Used for Profiling builds to track updaters.\n\nfunction shouldProfile(current) {\n return enableProfilerTimer ;\n}\n\nfunction callComponentWillUnmountWithTimer(current, instance) {\n instance.props = current.memoizedProps;\n instance.state = current.memoizedState;\n\n {\n instance.componentWillUnmount();\n }\n} // Capture errors so they don't interrupt unmounting.\n\n\nfunction safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance) {\n try {\n callComponentWillUnmountWithTimer(current, instance);\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n commitAttachRef(current);\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\n\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n const ref = current.ref;\n const refCleanup = current.refCleanup;\n\n if (ref !== null) {\n if (typeof refCleanup === 'function') {\n try {\n if (shouldProfile(current)) ; else {\n refCleanup();\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n // `refCleanup` has been called. Nullify all references to it to prevent double invocation.\n current.refCleanup = null;\n const finishedWork = current.alternate;\n\n if (finishedWork != null) {\n finishedWork.refCleanup = null;\n }\n }\n } else if (typeof ref === 'function') {\n let retVal;\n\n try {\n if (shouldProfile(current)) ; else {\n retVal = ref(null);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n } else {\n // $FlowFixMe[incompatible-use] unable to narrow type to RefObject\n ref.current = null;\n }\n }\n}\n\nfunction safelyCallDestroy(current, nearestMountedAncestor, destroy) {\n try {\n destroy();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nlet shouldFireAfterActiveInstanceBlur = false;\nfunction commitBeforeMutationEffects(root, firstChild) {\n prepareForCommit();\n nextEffect = firstChild;\n commitBeforeMutationEffects_begin(); // We no longer need to track the active instance fiber\n\n const shouldFire = shouldFireAfterActiveInstanceBlur;\n shouldFireAfterActiveInstanceBlur = false;\n return shouldFire;\n}\n\nfunction commitBeforeMutationEffects_begin() {\n while (nextEffect !== null) {\n const fiber = nextEffect; // This phase is only used for beforeActiveInstanceBlur.\n\n const child = fiber.child;\n\n if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags$1 && child !== null) {\n child.return = fiber;\n nextEffect = child;\n } else {\n commitBeforeMutationEffects_complete();\n }\n }\n}\n\nfunction commitBeforeMutationEffects_complete() {\n while (nextEffect !== null) {\n const fiber = nextEffect;\n\n try {\n commitBeforeMutationEffectsOnFiber(fiber);\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n const sibling = fiber.sibling;\n\n if (sibling !== null) {\n sibling.return = fiber.return;\n nextEffect = sibling;\n return;\n }\n\n nextEffect = fiber.return;\n }\n}\n\nfunction commitBeforeMutationEffectsOnFiber(finishedWork) {\n const current = finishedWork.alternate;\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n {\n\n break;\n }\n\n case ForwardRef:\n case SimpleMemoComponent:\n {\n break;\n }\n\n case ClassComponent:\n {\n if ((flags & Snapshot) !== NoFlags$1) {\n if (current !== null) {\n const prevProps = current.memoizedProps;\n const prevState = current.memoizedState;\n const instance = finishedWork.stateNode; // We could update instance props and state here,\n\n const snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n\n instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n }\n }\n\n break;\n }\n\n case HostRoot:\n {\n if ((flags & Snapshot) !== NoFlags$1) {\n {\n const root = finishedWork.stateNode;\n clearContainer(root.containerInfo);\n }\n }\n\n break;\n }\n\n case HostComponent:\n case HostHoistable:\n case HostSingleton:\n case HostText:\n case HostPortal:\n case IncompleteClassComponent:\n // Nothing to do for these component types\n break;\n\n default:\n {\n if ((flags & Snapshot) !== NoFlags$1) {\n throw Error(formatProdErrorMessage(163));\n }\n }\n }\n}\n\nfunction commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n const updateQueue = finishedWork.updateQueue;\n const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n if (lastEffect !== null) {\n const firstEffect = lastEffect.next;\n let effect = firstEffect;\n\n do {\n if ((effect.tag & flags) === flags) {\n // Unmount\n const inst = effect.inst;\n const destroy = inst.destroy;\n\n if (destroy !== undefined) {\n inst.destroy = undefined;\n\n safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n }\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n}\n\nfunction commitHookEffectListMount(flags, finishedWork) {\n const updateQueue = finishedWork.updateQueue;\n const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n if (lastEffect !== null) {\n const firstEffect = lastEffect.next;\n let effect = firstEffect;\n\n do {\n if ((effect.tag & flags) === flags) {\n\n\n const create = effect.create;\n\n const inst = effect.inst;\n const destroy = create();\n inst.destroy = destroy;\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n}\n\nfunction commitHookLayoutEffects(finishedWork, hookFlags) {\n // At this point layout effects have already been destroyed (during mutation phase).\n // This is done to prevent sibling component effects from interfering with each other,\n // e.g. a destroy function in one component should never override a ref set\n // by a create function in another component during the same commit.\n {\n try {\n commitHookEffectListMount(hookFlags, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\n\nfunction commitClassLayoutLifecycles(finishedWork, current) {\n const instance = finishedWork.stateNode;\n\n if (current === null) {\n\n {\n try {\n instance.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n } else {\n const prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);\n const prevState = current.memoizedState; // We could update instance props and state here,\n\n {\n try {\n instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n}\n\nfunction commitClassCallbacks(finishedWork) {\n // TODO: I think this is now always non-null by the time it reaches the\n // commit phase. Consider removing the type check.\n const updateQueue = finishedWork.updateQueue;\n\n if (updateQueue !== null) {\n const instance = finishedWork.stateNode;\n // but instead we rely on them being set during last render.\n // TODO: revisit this when we implement resuming.\n\n\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\n\nfunction commitHostComponentMount(finishedWork) {\n const type = finishedWork.type;\n const props = finishedWork.memoizedProps;\n const instance = finishedWork.stateNode;\n\n try {\n commitMount(instance, type, props, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\n\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork, committedLanes) {\n // When updating this function, also update reappearLayoutEffects, which does\n // most of the same things when an offscreen tree goes from hidden -> visible.\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n\n if (flags & Update) {\n commitHookLayoutEffects(finishedWork, Layout | HasEffect);\n }\n\n break;\n }\n\n case ClassComponent:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n\n if (flags & Update) {\n commitClassLayoutLifecycles(finishedWork, current);\n }\n\n if (flags & Callback) {\n commitClassCallbacks(finishedWork);\n }\n\n if (flags & Ref) {\n safelyAttachRef(finishedWork, finishedWork.return);\n }\n\n break;\n }\n\n case HostRoot:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n\n if (flags & Callback) {\n // TODO: I think this is now always non-null by the time it reaches the\n // commit phase. Consider removing the type check.\n const updateQueue = finishedWork.updateQueue;\n\n if (updateQueue !== null) {\n let instance = null;\n\n if (finishedWork.child !== null) {\n switch (finishedWork.child.tag) {\n case HostSingleton:\n case HostComponent:\n instance = getPublicInstance(finishedWork.child.stateNode);\n break;\n\n case ClassComponent:\n instance = finishedWork.child.stateNode;\n break;\n }\n }\n\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n\n break;\n }\n\n case HostHoistable:\n {\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n\n if (flags & Ref) {\n safelyAttachRef(finishedWork, finishedWork.return);\n }\n\n break;\n } // Fall through\n\n }\n\n case HostSingleton:\n case HostComponent:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); // Renderers may schedule work to be done after host components are mounted\n // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n // These effects should only be committed when components are first mounted,\n // aka when there is no current/alternate.\n\n if (current === null && flags & Update) {\n commitHostComponentMount(finishedWork);\n }\n\n if (flags & Ref) {\n safelyAttachRef(finishedWork, finishedWork.return);\n }\n\n break;\n }\n\n case Profiler:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); // TODO: Should this fire inside an offscreen tree? Or should it wait to\n\n break;\n }\n\n case SuspenseComponent:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n\n if (flags & Update) {\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n }\n\n break;\n }\n\n case OffscreenComponent:\n {\n const isModernRoot = (finishedWork.mode & ConcurrentMode) !== NoMode;\n\n if (isModernRoot) {\n const isHidden = finishedWork.memoizedState !== null;\n const newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n\n if (newOffscreenSubtreeIsHidden) ; else {\n // The Offscreen tree is visible.\n const wasHidden = current !== null && current.memoizedState !== null;\n const newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n const prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n const prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n\n if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n // This is the root of a reappearing boundary. As we continue\n // traversing the layout effects, we must also re-mount layout\n // effects that were unmounted when the Offscreen subtree was\n // hidden. So this is a superset of the normal commitLayoutEffects.\n const includeWorkInProgressEffects = (finishedWork.subtreeFlags & LayoutMask) !== NoFlags$1;\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects);\n } else {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n } else {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n\n if (flags & Ref) {\n const props = finishedWork.memoizedProps;\n\n if (props.mode === 'manual') {\n safelyAttachRef(finishedWork, finishedWork.return);\n } else {\n safelyDetachRef(finishedWork, finishedWork.return);\n }\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n }\n }\n}\n\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n // Only hide or unhide the top-most host nodes.\n let hostSubtreeRoot = null;\n\n {\n // We only have the top Fiber that was inserted but we need to recurse down its\n // children to find all the terminal nodes.\n let node = finishedWork;\n\n while (true) {\n if (node.tag === HostComponent || (node.tag === HostHoistable ) || (node.tag === HostSingleton )) {\n if (hostSubtreeRoot === null) {\n hostSubtreeRoot = node;\n\n try {\n const instance = node.stateNode;\n\n if (isHidden) {\n hideInstance(instance);\n } else {\n unhideInstance(node.stateNode, node.memoizedProps);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n } else if (node.tag === HostText) {\n if (hostSubtreeRoot === null) {\n try {\n const instance = node.stateNode;\n\n if (isHidden) {\n hideTextInstance(instance);\n } else {\n unhideTextInstance(instance, node.memoizedProps);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n\n if (node === finishedWork) {\n return;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === finishedWork) {\n return;\n }\n\n if (hostSubtreeRoot === node) {\n hostSubtreeRoot = null;\n }\n\n node = node.return;\n }\n\n if (hostSubtreeRoot === node) {\n hostSubtreeRoot = null;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n}\n\nfunction commitAttachRef(finishedWork) {\n const ref = finishedWork.ref;\n\n if (ref !== null) {\n const instance = finishedWork.stateNode;\n let instanceToUse;\n\n switch (finishedWork.tag) {\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n instanceToUse = getPublicInstance(instance);\n break;\n\n default:\n instanceToUse = instance;\n } // Moved outside to ensure DCE works with this flag\n\n if (typeof ref === 'function') {\n {\n finishedWork.refCleanup = ref(instanceToUse);\n }\n } else {\n\n\n ref.current = instanceToUse;\n }\n }\n}\n\nfunction detachFiberMutation(fiber) {\n // Cut off the return pointer to disconnect it from the tree.\n // This enables us to detect and warn against state updates on an unmounted component.\n // It also prevents events from bubbling from within disconnected components.\n //\n // Ideally, we should also clear the child pointer of the parent alternate to let this\n // get GC:ed but we don't know which for sure which parent is the current\n // one so we'll settle for GC:ing the subtree of this child.\n // This child itself will be GC:ed when the parent updates the next time.\n //\n // Note that we can't clear child or sibling pointers yet.\n // They're needed for passive effects and for findDOMNode.\n // We defer those fields, and all other cleanup, to the passive phase (see detachFiberAfterEffects).\n //\n // Don't reset the alternate yet, either. We need that so we can detach the\n // alternate's fields in the passive phase. Clearing the return pointer is\n // sufficient for findDOMNode semantics.\n const alternate = fiber.alternate;\n\n if (alternate !== null) {\n alternate.return = null;\n }\n\n fiber.return = null;\n}\n\nfunction detachFiberAfterEffects(fiber) {\n const alternate = fiber.alternate;\n\n if (alternate !== null) {\n fiber.alternate = null;\n detachFiberAfterEffects(alternate);\n } // Clear cyclical Fiber fields. This level alone is designed to roughly\n // approximate the planned Fiber refactor. In that world, `setState` will be\n // bound to a special \"instance\" object instead of a Fiber. The Instance\n // object will not have any of these fields. It will only be connected to\n // the fiber tree via a single link at the root. So if this level alone is\n // sufficient to fix memory issues, that bodes well for our plans.\n\n\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null; // The `stateNode` is cyclical because on host nodes it points to the host\n // tree, which has its own pointers to children, parents, and siblings.\n // The other host nodes also point back to fibers, so we should detach that\n // one, too.\n\n if (fiber.tag === HostComponent) {\n const hostInstance = fiber.stateNode;\n\n if (hostInstance !== null) {\n detachDeletedInstance(hostInstance);\n }\n }\n\n fiber.stateNode = null;\n // disconnected the fiber from the tree. So even if something leaks this\n // particular fiber, it won't leak anything else.\n\n\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null; // TODO: Move to `commitPassiveUnmountInsideDeletedTreeOnFiber` instead.\n\n fiber.updateQueue = null;\n}\n\nfunction getHostParentFiber(fiber) {\n let parent = fiber.return;\n\n while (parent !== null) {\n if (isHostParent(parent)) {\n return parent;\n }\n\n parent = parent.return;\n }\n\n throw Error(formatProdErrorMessage(160));\n}\n\nfunction isHostParent(fiber) {\n return fiber.tag === HostComponent || fiber.tag === HostRoot || (fiber.tag === HostHoistable ) || (fiber.tag === HostSingleton ) || fiber.tag === HostPortal;\n}\n\nfunction getHostSibling(fiber) {\n // We're going to search forward into the tree until we find a sibling host\n // node. Unfortunately, if multiple insertions are done in a row we have to\n // search past them. This leads to exponential search for the next sibling.\n // TODO: Find a more efficient way to do this.\n let node = fiber;\n\n siblings: while (true) {\n // If we didn't find anything, let's try the next sibling.\n while (node.sibling === null) {\n if (node.return === null || isHostParent(node.return)) {\n // If we pop out of the root or hit the parent the fiber we are the\n // last sibling.\n return null;\n } // $FlowFixMe[incompatible-type] found when upgrading Flow\n\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n\n while (node.tag !== HostComponent && node.tag !== HostText && (node.tag !== HostSingleton) && node.tag !== DehydratedFragment) {\n // If it is not host node and, we might have a host node inside it.\n // Try to search down until we find one.\n if (node.flags & Placement) {\n // If we don't have a child, try the siblings instead.\n continue siblings;\n } // If we don't have a child, try the siblings instead.\n // We also skip portals because they are not part of this host tree.\n\n\n if (node.child === null || node.tag === HostPortal) {\n continue siblings;\n } else {\n node.child.return = node;\n node = node.child;\n }\n } // Check if this host node is stable or about to be placed.\n\n\n if (!(node.flags & Placement)) {\n // Found it!\n return node.stateNode;\n }\n }\n}\n\nfunction commitPlacement(finishedWork) {\n\n {\n if (finishedWork.tag === HostSingleton) {\n // Singletons are already in the Host and don't need to be placed\n // Since they operate somewhat like Portals though their children will\n // have Placement and will get placed inside them\n return;\n }\n } // Recursively insert all host nodes into the parent.\n\n\n const parentFiber = getHostParentFiber(finishedWork);\n\n switch (parentFiber.tag) {\n case HostSingleton:\n {\n {\n const parent = parentFiber.stateNode;\n const before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n // children to find all the terminal nodes.\n\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n } // Fall through\n\n }\n\n case HostComponent:\n {\n const parent = parentFiber.stateNode;\n\n if (parentFiber.flags & ContentReset) {\n // Reset the text content of the parent before doing any insertions\n resetTextContent(parent); // Clear ContentReset from the effect tag\n\n parentFiber.flags &= ~ContentReset;\n }\n\n const before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n // children to find all the terminal nodes.\n\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n }\n\n case HostRoot:\n case HostPortal:\n {\n const parent = parentFiber.stateNode.containerInfo;\n const before = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent);\n break;\n }\n\n default:\n throw Error(formatProdErrorMessage(161));\n }\n}\n\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n const tag = node.tag;\n const isHost = tag === HostComponent || tag === HostText;\n\n if (isHost) {\n const stateNode = node.stateNode;\n\n if (before) {\n insertInContainerBefore(parent, stateNode, before);\n } else {\n appendChildToContainer(parent, stateNode);\n }\n } else if (tag === HostPortal || (tag === HostSingleton )) ; else {\n const child = node.child;\n\n if (child !== null) {\n insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n let sibling = child.sibling;\n\n while (sibling !== null) {\n insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n sibling = sibling.sibling;\n }\n }\n }\n}\n\nfunction insertOrAppendPlacementNode(node, before, parent) {\n const tag = node.tag;\n const isHost = tag === HostComponent || tag === HostText;\n\n if (isHost) {\n const stateNode = node.stateNode;\n\n if (before) {\n insertBefore(parent, stateNode, before);\n } else {\n appendChild(parent, stateNode);\n }\n } else if (tag === HostPortal || (tag === HostSingleton )) ; else {\n const child = node.child;\n\n if (child !== null) {\n insertOrAppendPlacementNode(child, before, parent);\n let sibling = child.sibling;\n\n while (sibling !== null) {\n insertOrAppendPlacementNode(sibling, before, parent);\n sibling = sibling.sibling;\n }\n }\n }\n} // These are tracked on the stack as we recursively traverse a\n// deleted subtree.\n// TODO: Update these during the whole mutation phase, not just during\n// a deletion.\n\n\nlet hostParent = null;\nlet hostParentIsContainer = false;\n\nfunction commitDeletionEffects(root, returnFiber, deletedFiber) {\n {\n // We only have the top Fiber that was deleted but we need to recurse down its\n // children to find all the terminal nodes.\n // Recursively delete all host nodes from the parent, detach refs, clean\n // up mounted layout effects, and call componentWillUnmount.\n // We only need to remove the topmost host child in each branch. But then we\n // still need to keep traversing to unmount effects, refs, and cWU. TODO: We\n // could split this into two separate traversals functions, where the second\n // one doesn't include any removeChild logic. This is maybe the same\n // function as \"disappearLayoutEffects\" (or whatever that turns into after\n // the layout phase is refactored to use recursion).\n // Before starting, find the nearest host parent on the stack so we know\n // which instance/container to remove the children from.\n // TODO: Instead of searching up the fiber return path on every deletion, we\n // can track the nearest host component on the JS stack as we traverse the\n // tree during the commit phase. This would make insertions faster, too.\n let parent = returnFiber;\n\n findParent: while (parent !== null) {\n switch (parent.tag) {\n case HostSingleton:\n case HostComponent:\n {\n hostParent = parent.stateNode;\n hostParentIsContainer = false;\n break findParent;\n }\n\n case HostRoot:\n {\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = true;\n break findParent;\n }\n\n case HostPortal:\n {\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = true;\n break findParent;\n }\n }\n\n parent = parent.return;\n }\n\n if (hostParent === null) {\n throw Error(formatProdErrorMessage(160));\n }\n\n commitDeletionEffectsOnFiber(root, returnFiber, deletedFiber);\n hostParent = null;\n hostParentIsContainer = false;\n }\n\n detachFiberMutation(deletedFiber);\n}\n\nfunction recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {\n // TODO: Use a static flag to skip trees that don't have unmount effects\n let child = parent.child;\n\n while (child !== null) {\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);\n child = child.sibling;\n }\n}\n\nfunction commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {\n onCommitUnmount(deletedFiber); // The cases in this outer switch modify the stack before they traverse\n // into their subtree. There are simpler cases in the inner switch\n // that don't modify the stack.\n\n switch (deletedFiber.tag) {\n case HostHoistable:\n {\n {\n if (!offscreenSubtreeWasHidden) {\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n }\n\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n\n if (deletedFiber.memoizedState) {\n releaseResource(deletedFiber.memoizedState);\n } else if (deletedFiber.stateNode) {\n unmountHoistable(deletedFiber.stateNode);\n }\n\n return;\n } // Fall through\n\n }\n\n case HostSingleton:\n {\n {\n if (!offscreenSubtreeWasHidden) {\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n }\n\n const prevHostParent = hostParent;\n const prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode;\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber); // Normally this is called in passive unmount effect phase however with\n // HostSingleton we warn if you acquire one that is already associated to\n // a different fiber. To increase our chances of avoiding this, specifically\n // if you keyed a HostSingleton so there will be a delete followed by a Placement\n // we treat detach eagerly here\n\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n return;\n } // Fall through\n\n }\n\n case HostComponent:\n {\n if (!offscreenSubtreeWasHidden) {\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n } // Intentional fallthrough to next branch\n\n }\n\n case HostText:\n {\n // We only need to remove the nearest host child. Set the host parent\n // to `null` on the stack to indicate that nested children don't\n // need to be removed.\n {\n const prevHostParent = hostParent;\n const prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n\n if (hostParent !== null) {\n // Now that all the child effects have unmounted, we can remove the\n // node from the tree.\n if (hostParentIsContainer) {\n removeChildFromContainer(hostParent, deletedFiber.stateNode);\n } else {\n removeChild(hostParent, deletedFiber.stateNode);\n }\n }\n }\n\n return;\n }\n\n case DehydratedFragment:\n {\n // Delete the dehydrated suspense boundary and all of its content.\n\n\n {\n if (hostParent !== null) {\n if (hostParentIsContainer) {\n clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);\n } else {\n clearSuspenseBoundary(hostParent, deletedFiber.stateNode);\n }\n }\n }\n\n return;\n }\n\n case HostPortal:\n {\n {\n // When we go into a portal, it becomes the parent to remove from.\n const prevHostParent = hostParent;\n const prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = true;\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n }\n\n return;\n }\n\n case FunctionComponent:\n case ForwardRef:\n case MemoComponent:\n case SimpleMemoComponent:\n {\n if (!offscreenSubtreeWasHidden) {\n const updateQueue = deletedFiber.updateQueue;\n\n if (updateQueue !== null) {\n const lastEffect = updateQueue.lastEffect;\n\n if (lastEffect !== null) {\n const firstEffect = lastEffect.next;\n let effect = firstEffect;\n\n do {\n const tag = effect.tag;\n const inst = effect.inst;\n const destroy = inst.destroy;\n\n if (destroy !== undefined) {\n if ((tag & Insertion) !== NoFlags) {\n inst.destroy = undefined;\n safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n } else if ((tag & Layout) !== NoFlags) {\n\n {\n inst.destroy = undefined;\n safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n }\n }\n }\n\n effect = effect.next;\n } while (effect !== firstEffect);\n }\n }\n }\n\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n return;\n }\n\n case ClassComponent:\n {\n if (!offscreenSubtreeWasHidden) {\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n const instance = deletedFiber.stateNode;\n\n if (typeof instance.componentWillUnmount === 'function') {\n safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);\n }\n }\n\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n return;\n }\n\n case ScopeComponent:\n {\n\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n return;\n }\n\n case OffscreenComponent:\n {\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n\n if (deletedFiber.mode & ConcurrentMode) {\n // If this offscreen component is hidden, we already unmounted it. Before\n // deleting the children, track that it's already unmounted so that we\n // don't attempt to unmount the effects again.\n // TODO: If the tree is hidden, in most cases we should be able to skip\n // over the nested children entirely. An exception is we haven't yet found\n // the topmost host node to delete, which we already track on the stack.\n // But the other case is portals, which need to be detached no matter how\n // deeply they are nested. We should use a subtree flag to track whether a\n // subtree includes a nested portal.\n const prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n } else {\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n return;\n }\n }\n}\n\nfunction commitSuspenseCallback(finishedWork) {\n}\n\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n\n const newState = finishedWork.memoizedState;\n\n if (newState === null) {\n const current = finishedWork.alternate;\n\n if (current !== null) {\n const prevState = current.memoizedState;\n\n if (prevState !== null) {\n const suspenseInstance = prevState.dehydrated;\n\n if (suspenseInstance !== null) {\n try {\n commitHydratedSuspenseInstance(suspenseInstance);\n\n if (enableSuspenseCallback) ;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n }\n }\n}\n\nfunction getRetryCache(finishedWork) {\n // TODO: Unify the interface for the retry cache so we don't have to switch\n // on the tag like this.\n switch (finishedWork.tag) {\n case SuspenseComponent:\n case SuspenseListComponent:\n {\n let retryCache = finishedWork.stateNode;\n\n if (retryCache === null) {\n retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n }\n\n return retryCache;\n }\n\n case OffscreenComponent:\n {\n const instance = finishedWork.stateNode;\n let retryCache = instance._retryCache;\n\n if (retryCache === null) {\n retryCache = instance._retryCache = new PossiblyWeakSet();\n }\n\n return retryCache;\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n }\n}\n\nfunction detachOffscreenInstance(instance) {\n const fiber = instance._current;\n\n if (fiber === null) {\n throw Error(formatProdErrorMessage(456));\n }\n\n if ((instance._pendingVisibility & OffscreenDetached) !== NoFlags$1) {\n // The instance is already detached, this is a noop.\n return;\n } // TODO: There is an opportunity to optimise this by not entering commit phase\n // and unmounting effects directly.\n\n\n const root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n if (root !== null) {\n instance._pendingVisibility |= OffscreenDetached;\n scheduleUpdateOnFiber(root, fiber, SyncLane);\n }\n}\nfunction attachOffscreenInstance(instance) {\n const fiber = instance._current;\n\n if (fiber === null) {\n throw Error(formatProdErrorMessage(456));\n }\n\n if ((instance._pendingVisibility & OffscreenDetached) === NoFlags$1) {\n // The instance is already attached, this is a noop.\n return;\n }\n\n const root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n if (root !== null) {\n instance._pendingVisibility &= ~OffscreenDetached;\n scheduleUpdateOnFiber(root, fiber, SyncLane);\n }\n}\n\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n // If this boundary just timed out, then it will have a set of wakeables.\n // For each wakeable, attach a listener so that when it resolves, React\n // attempts to re-render the boundary in the primary (pre-timeout) state.\n const retryCache = getRetryCache(finishedWork);\n wakeables.forEach(wakeable => {\n // Memoize using the boundary fiber to prevent redundant listeners.\n const retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n\n wakeable.then(retry, retry);\n }\n });\n} // This function detects when a Suspense boundary goes from visible to hidden.\nfunction commitMutationEffects(root, finishedWork, committedLanes) {\n commitMutationEffectsOnFiber(finishedWork, root);\n}\n\nfunction recursivelyTraverseMutationEffects(root, parentFiber, lanes) {\n // Deletions effects can be scheduled on any fiber type. They need to happen\n // before the children effects hae fired.\n const deletions = parentFiber.deletions;\n\n if (deletions !== null) {\n for (let i = 0; i < deletions.length; i++) {\n const childToDelete = deletions[i];\n\n try {\n commitDeletionEffects(root, parentFiber, childToDelete);\n } catch (error) {\n captureCommitPhaseError(childToDelete, parentFiber, error);\n }\n }\n }\n\n if (parentFiber.subtreeFlags & MutationMask) {\n let child = parentFiber.child;\n\n while (child !== null) {\n commitMutationEffectsOnFiber(child, root);\n child = child.sibling;\n }\n }\n}\n\nlet currentHoistableRoot = null;\n\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n const current = finishedWork.alternate;\n const flags = finishedWork.flags; // The effect flag should be checked *after* we refine the type of fiber,\n // because the fiber tag is more specific. An exception is any flag related\n // to reconciliation, because those can be set on all fiber types.\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case MemoComponent:\n case SimpleMemoComponent:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Update) {\n try {\n commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n } // Layout effects are destroyed during the mutation phase so that all\n // destroy functions for all fibers are called before any create functions.\n // This prevents sibling component effects from interfering with each other,\n // e.g. a destroy function in one component should never override a ref set\n // by a create function in another component during the same commit.\n\n\n {\n try {\n commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n\n return;\n }\n\n case ClassComponent:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Ref) {\n if (current !== null) {\n safelyDetachRef(current, current.return);\n }\n }\n\n if (flags & Callback && offscreenSubtreeIsHidden) {\n const updateQueue = finishedWork.updateQueue;\n\n if (updateQueue !== null) {\n deferHiddenCallbacks(updateQueue);\n }\n }\n\n return;\n }\n\n case HostHoistable:\n {\n {\n // We cast because we always set the root at the React root and so it cannot be\n // null while we are processing mutation effects\n const hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Ref) {\n if (current !== null) {\n safelyDetachRef(current, current.return);\n }\n }\n\n if (flags & Update) {\n const currentResource = current !== null ? current.memoizedState : null;\n const newResource = finishedWork.memoizedState;\n\n if (current === null) {\n // We are mounting a new HostHoistable Fiber. We fork the mount\n // behavior based on whether this instance is a Hoistable Instance\n // or a Hoistable Resource\n if (newResource === null) {\n if (finishedWork.stateNode === null) {\n finishedWork.stateNode = hydrateHoistable(hoistableRoot, finishedWork.type, finishedWork.memoizedProps, finishedWork);\n } else {\n mountHoistable(hoistableRoot, finishedWork.type, finishedWork.stateNode);\n }\n } else {\n finishedWork.stateNode = acquireResource(hoistableRoot, newResource, finishedWork.memoizedProps);\n }\n } else if (currentResource !== newResource) {\n // We are moving to or from Hoistable Resource, or between different Hoistable Resources\n if (currentResource === null) {\n if (current.stateNode !== null) {\n unmountHoistable(current.stateNode);\n }\n } else {\n releaseResource(currentResource);\n }\n\n if (newResource === null) {\n mountHoistable(hoistableRoot, finishedWork.type, finishedWork.stateNode);\n } else {\n acquireResource(hoistableRoot, newResource, finishedWork.memoizedProps);\n }\n } else if (newResource === null && finishedWork.stateNode !== null) {\n // We may have an update on a Hoistable element\n const updatePayload = finishedWork.updateQueue;\n finishedWork.updateQueue = null;\n\n try {\n commitUpdate(finishedWork.stateNode, updatePayload, finishedWork.type, current.memoizedProps, finishedWork.memoizedProps, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n\n return;\n } // Fall through\n\n }\n\n case HostSingleton:\n {\n {\n if (flags & Update) {\n const previousWork = finishedWork.alternate;\n\n if (previousWork === null) {\n const singleton = finishedWork.stateNode;\n const props = finishedWork.memoizedProps; // This was a new mount, we need to clear and set initial properties\n\n clearSingleton(singleton);\n acquireSingletonInstance(finishedWork.type, props, singleton, finishedWork);\n }\n }\n } // Fall through\n\n }\n\n case HostComponent:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Ref) {\n if (current !== null) {\n safelyDetachRef(current, current.return);\n }\n }\n\n {\n // TODO: ContentReset gets cleared by the children during the commit\n // phase. This is a refactor hazard because it means we must read\n // flags the flags after `commitReconciliationEffects` has already run;\n // the order matters. We should refactor so that ContentReset does not\n // rely on mutating the flag during commit. Like by setting a flag\n // during the render phase instead.\n if (finishedWork.flags & ContentReset) {\n const instance = finishedWork.stateNode;\n\n try {\n resetTextContent(instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n\n if (flags & Update) {\n const instance = finishedWork.stateNode;\n\n if (instance != null) {\n // Commit the work prepared earlier.\n const newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n // as the newProps. The updatePayload will contain the real change in\n // this case.\n\n const oldProps = current !== null ? current.memoizedProps : newProps;\n const type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.\n\n const updatePayload = finishedWork.updateQueue;\n finishedWork.updateQueue = null;\n\n try {\n commitUpdate(instance, updatePayload, type, oldProps, newProps, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n }\n\n return;\n }\n\n case HostText:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Update) {\n {\n if (finishedWork.stateNode === null) {\n throw Error(formatProdErrorMessage(162));\n }\n\n const textInstance = finishedWork.stateNode;\n const newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n // as the newProps. The updatePayload will contain the real change in\n // this case.\n\n const oldText = current !== null ? current.memoizedProps : newText;\n\n try {\n commitTextUpdate(textInstance, oldText, newText);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n\n return;\n }\n\n case HostRoot:\n {\n {\n prepareToCommitHoistables();\n const previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = previousHoistableRoot;\n commitReconciliationEffects(finishedWork);\n }\n\n if (flags & Update) {\n {\n if (current !== null) {\n const prevRootState = current.memoizedState;\n\n if (prevRootState.isDehydrated) {\n try {\n commitHydratedContainer(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n }\n }\n }\n\n return;\n }\n\n case HostPortal:\n {\n {\n const previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(finishedWork.stateNode.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = previousHoistableRoot;\n }\n\n return;\n }\n\n case SuspenseComponent:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork); // TODO: We should mark a flag on the Suspense fiber itself, rather than\n // relying on the Offscreen fiber having a flag also being marked. The\n // reason is that this offscreen fiber might not be part of the work-in-\n // progress tree! It could have been reused from a previous render. This\n // doesn't lead to incorrect behavior because we don't rely on the flag\n // check alone; we also compare the states explicitly below. But for\n // modeling purposes, we _should_ be able to rely on the flag check alone.\n // So this is a bit fragile.\n //\n // Also, all this logic could/should move to the passive phase so it\n // doesn't block paint.\n\n const offscreenFiber = finishedWork.child;\n\n if (offscreenFiber.flags & Visibility) {\n // Throttle the appearance and disappearance of Suspense fallbacks.\n const isShowingFallback = finishedWork.memoizedState !== null;\n const wasShowingFallback = current !== null && current.memoizedState !== null;\n\n {\n if (isShowingFallback !== wasShowingFallback) {\n // A fallback is either appearing or disappearing.\n markCommitTimeOfFallback();\n }\n }\n }\n\n if (flags & Update) {\n try {\n commitSuspenseCallback(finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n\n const retryQueue = finishedWork.updateQueue;\n\n if (retryQueue !== null) {\n finishedWork.updateQueue = null;\n attachSuspenseRetryListeners(finishedWork, retryQueue);\n }\n }\n\n return;\n }\n\n case OffscreenComponent:\n {\n if (flags & Ref) {\n if (current !== null) {\n safelyDetachRef(current, current.return);\n }\n }\n\n const newState = finishedWork.memoizedState;\n const isHidden = newState !== null;\n const wasHidden = current !== null && current.memoizedState !== null;\n\n if (finishedWork.mode & ConcurrentMode) {\n // Before committing the children, track on the stack whether this\n // offscreen subtree was already hidden, so that we don't unmount the\n // effects again.\n const prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n const prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || isHidden;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n } else {\n recursivelyTraverseMutationEffects(root, finishedWork);\n }\n\n commitReconciliationEffects(finishedWork);\n const offscreenInstance = finishedWork.stateNode; // TODO: Add explicit effect flag to set _current.\n\n offscreenInstance._current = finishedWork; // Offscreen stores pending changes to visibility in `_pendingVisibility`. This is\n // to support batching of `attach` and `detach` calls.\n\n offscreenInstance._visibility &= ~OffscreenDetached;\n offscreenInstance._visibility |= offscreenInstance._pendingVisibility & OffscreenDetached;\n\n if (flags & Visibility) {\n // Track the current state on the Offscreen instance so we can\n // read it during an event\n if (isHidden) {\n offscreenInstance._visibility &= ~OffscreenVisible;\n } else {\n offscreenInstance._visibility |= OffscreenVisible;\n }\n\n if (isHidden) {\n const isUpdate = current !== null;\n const wasHiddenByAncestorOffscreen = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden; // Only trigger disapper layout effects if:\n // - This is an update, not first mount.\n // - This Offscreen was not hidden before.\n // - Ancestor Offscreen was not hidden in previous commit.\n\n if (isUpdate && !wasHidden && !wasHiddenByAncestorOffscreen) {\n if ((finishedWork.mode & ConcurrentMode) !== NoMode) {\n // Disappear the layout effects of all the children\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n }\n } // Offscreen with manual mode manages visibility manually.\n\n\n if (!isOffscreenManual(finishedWork)) {\n // TODO: This needs to run whenever there's an insertion or update\n // inside a hidden Offscreen tree.\n hideOrUnhideAllChildren(finishedWork, isHidden);\n }\n } // TODO: Move to passive phase\n\n\n if (flags & Update) {\n const offscreenQueue = finishedWork.updateQueue;\n\n if (offscreenQueue !== null) {\n const retryQueue = offscreenQueue.retryQueue;\n\n if (retryQueue !== null) {\n offscreenQueue.retryQueue = null;\n attachSuspenseRetryListeners(finishedWork, retryQueue);\n }\n }\n }\n\n return;\n }\n\n case SuspenseListComponent:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n\n if (flags & Update) {\n const retryQueue = finishedWork.updateQueue;\n\n if (retryQueue !== null) {\n finishedWork.updateQueue = null;\n attachSuspenseRetryListeners(finishedWork, retryQueue);\n }\n }\n\n return;\n }\n\n case ScopeComponent:\n {\n\n return;\n }\n\n default:\n {\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n return;\n }\n }\n}\n\nfunction commitReconciliationEffects(finishedWork) {\n // Placement effects (insertions, reorders) can be scheduled on any fiber\n // type. They needs to happen after the children effects have fired, but\n // before the effects on this fiber have fired.\n const flags = finishedWork.flags;\n\n if (flags & Placement) {\n try {\n commitPlacement(finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n } // Clear the \"placement\" from effect tag so that we know that this is\n // inserted, before any life-cycles like componentDidMount gets called.\n // TODO: findDOMNode doesn't rely on this any more but isMounted does\n // and isMounted is deprecated anyway so we should be able to kill this.\n\n\n finishedWork.flags &= ~Placement;\n }\n\n if (flags & Hydrating) {\n finishedWork.flags &= ~Hydrating;\n }\n}\n\nfunction commitLayoutEffects(finishedWork, root, committedLanes) {\n const current = finishedWork.alternate;\n commitLayoutEffectOnFiber(root, current, finishedWork);\n}\n\nfunction recursivelyTraverseLayoutEffects(root, parentFiber, lanes) {\n\n if (parentFiber.subtreeFlags & LayoutMask) {\n let child = parentFiber.child;\n\n while (child !== null) {\n const current = child.alternate;\n commitLayoutEffectOnFiber(root, current, child);\n child = child.sibling;\n }\n }\n}\n\nfunction disappearLayoutEffects(finishedWork) {\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case MemoComponent:\n case SimpleMemoComponent:\n {\n // TODO (Offscreen) Check: flags & LayoutStatic\n {\n commitHookEffectListUnmount(Layout, finishedWork, finishedWork.return);\n }\n\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n }\n\n case ClassComponent:\n {\n // TODO (Offscreen) Check: flags & RefStatic\n safelyDetachRef(finishedWork, finishedWork.return);\n const instance = finishedWork.stateNode;\n\n if (typeof instance.componentWillUnmount === 'function') {\n safelyCallComponentWillUnmount(finishedWork, finishedWork.return, instance);\n }\n\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n }\n\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n {\n // TODO (Offscreen) Check: flags & RefStatic\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n }\n\n case OffscreenComponent:\n {\n // TODO (Offscreen) Check: flags & RefStatic\n safelyDetachRef(finishedWork, finishedWork.return);\n const isHidden = finishedWork.memoizedState !== null;\n\n if (isHidden) ; else {\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n }\n }\n}\n\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n let child = parentFiber.child;\n\n while (child !== null) {\n disappearLayoutEffects(child);\n child = child.sibling;\n }\n}\n\nfunction reappearLayoutEffects(finishedRoot, current, finishedWork, // This function visits both newly finished work and nodes that were re-used\n// from a previously committed tree. We cannot check non-static flags if the\n// node was reused.\nincludeWorkInProgressEffects) {\n // Turn on layout effects in a tree that previously disappeared.\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects); // TODO: Check flags & LayoutStatic\n\n commitHookLayoutEffects(finishedWork, Layout);\n break;\n }\n\n case ClassComponent:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects); // TODO: Check for LayoutStatic flag\n\n const instance = finishedWork.stateNode;\n\n if (typeof instance.componentDidMount === 'function') {\n try {\n instance.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } // Commit any callbacks that would have fired while the component\n // was hidden.\n\n\n const updateQueue = finishedWork.updateQueue;\n\n if (updateQueue !== null) {\n commitHiddenCallbacks(updateQueue, instance);\n } // If this is newly finished work, check for setState callbacks\n\n\n if (includeWorkInProgressEffects && flags & Callback) {\n commitClassCallbacks(finishedWork);\n } // TODO: Check flags & RefStatic\n\n\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n }\n // Unlike commitLayoutEffectsOnFiber, we don't need to handle HostRoot\n // because this function only visits nodes that are inside an\n // Offscreen fiber.\n // case HostRoot: {\n // ...\n // }\n\n case HostHoistable:\n case HostSingleton:\n case HostComponent:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects); // Renderers may schedule work to be done after host components are mounted\n // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n // These effects should only be committed when components are first mounted,\n // aka when there is no current/alternate.\n\n if (includeWorkInProgressEffects && current === null && flags & Update) {\n commitHostComponentMount(finishedWork);\n } // TODO: Check flags & Ref\n\n\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n }\n\n case Profiler:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects); // TODO: Figure out how Profiler updates should work with Offscreen\n\n break;\n }\n\n case SuspenseComponent:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects); // TODO: Figure out how Suspense hydration callbacks should work\n // with Offscreen.\n\n if (includeWorkInProgressEffects && flags & Update) {\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n }\n\n break;\n }\n\n case OffscreenComponent:\n {\n const offscreenState = finishedWork.memoizedState;\n const isHidden = offscreenState !== null;\n\n if (isHidden) ; else {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects);\n } // TODO: Check flags & Ref\n\n\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n }\n\n default:\n {\n recursivelyTraverseReappearLayoutEffects(finishedRoot, finishedWork, includeWorkInProgressEffects);\n break;\n }\n }\n}\n\nfunction recursivelyTraverseReappearLayoutEffects(finishedRoot, parentFiber, includeWorkInProgressEffects) {\n // This function visits both newly finished work and nodes that were re-used\n // from a previously committed tree. We cannot check non-static flags if the\n // node was reused.\n const childShouldIncludeWorkInProgressEffects = includeWorkInProgressEffects && (parentFiber.subtreeFlags & LayoutMask) !== NoFlags$1; // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n let child = parentFiber.child;\n\n while (child !== null) {\n const current = child.alternate;\n reappearLayoutEffects(finishedRoot, current, child, childShouldIncludeWorkInProgressEffects);\n child = child.sibling;\n }\n}\n\nfunction commitHookPassiveMountEffects(finishedWork, hookFlags) {\n {\n try {\n commitHookEffectListMount(hookFlags, finishedWork);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\n\nfunction commitOffscreenPassiveMountEffects(current, finishedWork, instance) {\n {\n let previousCache = null;\n\n if (current !== null && current.memoizedState !== null && current.memoizedState.cachePool !== null) {\n previousCache = current.memoizedState.cachePool.pool;\n }\n\n let nextCache = null;\n\n if (finishedWork.memoizedState !== null && finishedWork.memoizedState.cachePool !== null) {\n nextCache = finishedWork.memoizedState.cachePool.pool;\n } // Retain/release the cache used for pending (suspended) nodes.\n // Note that this is only reached in the non-suspended/visible case:\n // when the content is suspended/hidden, the retain/release occurs\n // via the parent Suspense component (see case above).\n\n\n if (nextCache !== previousCache) {\n if (nextCache != null) {\n retainCache(nextCache);\n }\n\n if (previousCache != null) {\n releaseCache(previousCache);\n }\n }\n }\n}\n\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n {\n let previousCache = null;\n\n if (finishedWork.alternate !== null) {\n previousCache = finishedWork.alternate.memoizedState.cache;\n }\n\n const nextCache = finishedWork.memoizedState.cache; // Retain/release the cache. In theory the cache component\n // could be \"borrowing\" a cache instance owned by some parent,\n // in which case we could avoid retaining/releasing. But it\n // is non-trivial to determine when that is the case, so we\n // always retain/release.\n\n if (nextCache !== previousCache) {\n retainCache(nextCache);\n\n if (previousCache != null) {\n releaseCache(previousCache);\n }\n }\n }\n}\n\nfunction commitPassiveMountEffects(root, finishedWork, committedLanes, committedTransitions) {\n commitPassiveMountOnFiber(root, finishedWork, committedLanes, committedTransitions);\n}\n\nfunction recursivelyTraversePassiveMountEffects(root, parentFiber, committedLanes, committedTransitions) {\n\n if (parentFiber.subtreeFlags & PassiveMask) {\n let child = parentFiber.child;\n\n while (child !== null) {\n commitPassiveMountOnFiber(root, child, committedLanes, committedTransitions);\n child = child.sibling;\n }\n }\n}\n\nfunction commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n // When updating this function, also update reconnectPassiveEffects, which does\n // most of the same things when an offscreen tree goes from hidden -> visible,\n // or when toggling effects inside a hidden tree.\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n\n if (flags & Passive$1) {\n commitHookPassiveMountEffects(finishedWork, Passive | HasEffect);\n }\n\n break;\n }\n\n case HostRoot:\n {\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n\n if (flags & Passive$1) {\n {\n let previousCache = null;\n\n if (finishedWork.alternate !== null) {\n previousCache = finishedWork.alternate.memoizedState.cache;\n }\n\n const nextCache = finishedWork.memoizedState.cache; // Retain/release the root cache.\n // Note that on initial mount, previousCache and nextCache will be the same\n // and this retain won't occur. To counter this, we instead retain the HostRoot's\n // initial cache when creating the root itself (see createFiberRoot() in\n // ReactFiberRoot.js). Subsequent updates that change the cache are reflected\n // here, such that previous/next caches are retained correctly.\n\n if (nextCache !== previousCache) {\n retainCache(nextCache);\n\n if (previousCache != null) {\n releaseCache(previousCache);\n }\n }\n }\n }\n\n break;\n }\n\n case LegacyHiddenComponent:\n {\n\n break;\n }\n\n case OffscreenComponent:\n {\n // TODO: Pass `current` as argument to this function\n const instance = finishedWork.stateNode;\n const nextState = finishedWork.memoizedState;\n const isHidden = nextState !== null;\n\n if (isHidden) {\n if (instance._visibility & OffscreenPassiveEffectsConnected) {\n // The effects are currently connected. Update them.\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n } else {\n if (finishedWork.mode & ConcurrentMode) {\n // The effects are currently disconnected. Since the tree is hidden,\n // don't connect them. This also applies to the initial render.\n {\n // \"Atomic\" effects are ones that need to fire on every commit,\n // even during pre-rendering. An example is updating the reference\n // count on cache instances.\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n } else {\n // Legacy Mode: Fire the effects even if the tree is hidden.\n instance._visibility |= OffscreenPassiveEffectsConnected;\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n }\n }\n } else {\n // Tree is visible\n if (instance._visibility & OffscreenPassiveEffectsConnected) {\n // The effects are currently connected. Update them.\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n } else {\n // The effects are currently disconnected. Reconnect them, while also\n // firing effects inside newly mounted trees. This also applies to\n // the initial render.\n instance._visibility |= OffscreenPassiveEffectsConnected;\n const includeWorkInProgressEffects = (finishedWork.subtreeFlags & PassiveMask) !== NoFlags$1;\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n }\n }\n\n if (flags & Passive$1) {\n const current = finishedWork.alternate;\n commitOffscreenPassiveMountEffects(current, finishedWork);\n }\n\n break;\n }\n\n case CacheComponent:\n {\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n\n if (flags & Passive$1) {\n // TODO: Pass `current` as argument to this function\n const current = finishedWork.alternate;\n commitCachePassiveMountEffect(current, finishedWork);\n }\n\n break;\n }\n\n case TracingMarkerComponent:\n\n default:\n {\n recursivelyTraversePassiveMountEffects(finishedRoot, finishedWork, committedLanes, committedTransitions);\n break;\n }\n }\n}\n\nfunction recursivelyTraverseReconnectPassiveEffects(finishedRoot, parentFiber, committedLanes, committedTransitions, includeWorkInProgressEffects) {\n // This function visits both newly finished work and nodes that were re-used\n // from a previously committed tree. We cannot check non-static flags if the\n // node was reused.\n const childShouldIncludeWorkInProgressEffects = includeWorkInProgressEffects && (parentFiber.subtreeFlags & PassiveMask) !== NoFlags$1; // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n let child = parentFiber.child;\n\n while (child !== null) {\n reconnectPassiveEffects(finishedRoot, child, committedLanes, committedTransitions, childShouldIncludeWorkInProgressEffects);\n child = child.sibling;\n }\n}\n\nfunction reconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, // This function visits both newly finished work and nodes that were re-used\n// from a previously committed tree. We cannot check non-static flags if the\n// node was reused.\nincludeWorkInProgressEffects) {\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects); // TODO: Check for PassiveStatic flag\n\n commitHookPassiveMountEffects(finishedWork, Passive);\n break;\n }\n // Unlike commitPassiveMountOnFiber, we don't need to handle HostRoot\n // because this function only visits nodes that are inside an\n // Offscreen fiber.\n // case HostRoot: {\n // ...\n // }\n\n case LegacyHiddenComponent:\n {\n\n break;\n }\n\n case OffscreenComponent:\n {\n const instance = finishedWork.stateNode;\n const nextState = finishedWork.memoizedState;\n const isHidden = nextState !== null;\n\n if (isHidden) {\n if (instance._visibility & OffscreenPassiveEffectsConnected) {\n // The effects are currently connected. Update them.\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n } else {\n if (finishedWork.mode & ConcurrentMode) {\n // The effects are currently disconnected. Since the tree is hidden,\n // don't connect them. This also applies to the initial render.\n {\n // \"Atomic\" effects are ones that need to fire on every commit,\n // even during pre-rendering. An example is updating the reference\n // count on cache instances.\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n } else {\n // Legacy Mode: Fire the effects even if the tree is hidden.\n instance._visibility |= OffscreenPassiveEffectsConnected;\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n }\n }\n } else {\n // Tree is visible\n // Since we're already inside a reconnecting tree, it doesn't matter\n // whether the effects are currently connected. In either case, we'll\n // continue traversing the tree and firing all the effects.\n //\n // We do need to set the \"connected\" flag on the instance, though.\n instance._visibility |= OffscreenPassiveEffectsConnected;\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n }\n\n if (includeWorkInProgressEffects && flags & Passive$1) {\n // TODO: Pass `current` as argument to this function\n const current = finishedWork.alternate;\n commitOffscreenPassiveMountEffects(current, finishedWork);\n }\n\n break;\n }\n\n case CacheComponent:\n {\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n\n if (includeWorkInProgressEffects && flags & Passive$1) {\n // TODO: Pass `current` as argument to this function\n const current = finishedWork.alternate;\n commitCachePassiveMountEffect(current, finishedWork);\n }\n\n break;\n }\n\n case TracingMarkerComponent:\n\n default:\n {\n recursivelyTraverseReconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects);\n break;\n }\n }\n}\n\nfunction recursivelyTraverseAtomicPassiveEffects(finishedRoot, parentFiber, committedLanes, committedTransitions) {\n\n if (parentFiber.subtreeFlags & PassiveMask) {\n let child = parentFiber.child;\n\n while (child !== null) {\n commitAtomicPassiveEffects(finishedRoot, child);\n child = child.sibling;\n }\n }\n}\n\nfunction commitAtomicPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n // \"Atomic\" effects are ones that need to fire on every commit, even during\n // pre-rendering. We call this function when traversing a hidden tree whose\n // regular effects are currently disconnected.\n const flags = finishedWork.flags;\n\n switch (finishedWork.tag) {\n case OffscreenComponent:\n {\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n\n if (flags & Passive$1) {\n // TODO: Pass `current` as argument to this function\n const current = finishedWork.alternate;\n commitOffscreenPassiveMountEffects(current, finishedWork);\n }\n\n break;\n }\n\n case CacheComponent:\n {\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n\n if (flags & Passive$1) {\n // TODO: Pass `current` as argument to this function\n const current = finishedWork.alternate;\n commitCachePassiveMountEffect(current, finishedWork);\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n break;\n }\n }\n}\n\nfunction commitPassiveUnmountEffects(finishedWork) {\n commitPassiveUnmountOnFiber(finishedWork);\n} // If we're inside a brand new tree, or a tree that was already visible, then we\n// should only suspend host components that have a ShouldSuspendCommit flag.\n// Components without it haven't changed since the last commit, so we can skip\n// over those.\n//\n// When we enter a tree that is being revealed (going from hidden -> visible),\n// we need to suspend _any_ component that _may_ suspend. Even if they're\n// already in the \"current\" tree. Because their visibility has changed, the\n// browser may not have prerendered them yet. So we check the MaySuspendCommit\n// flag instead.\n\nlet suspenseyCommitFlag = ShouldSuspendCommit;\nfunction accumulateSuspenseyCommit(finishedWork) {\n accumulateSuspenseyCommitOnFiber(finishedWork);\n}\n\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag) {\n let child = parentFiber.child;\n\n while (child !== null) {\n accumulateSuspenseyCommitOnFiber(child);\n child = child.sibling;\n }\n }\n}\n\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n switch (fiber.tag) {\n case HostHoistable:\n {\n recursivelyAccumulateSuspenseyCommit(fiber);\n\n if (fiber.flags & suspenseyCommitFlag) {\n if (fiber.memoizedState !== null) {\n suspendResource( // This should always be set by visiting HostRoot first\n currentHoistableRoot, fiber.memoizedState, fiber.memoizedProps);\n }\n }\n\n break;\n }\n\n case HostComponent:\n {\n recursivelyAccumulateSuspenseyCommit(fiber);\n\n break;\n }\n\n case HostRoot:\n case HostPortal:\n {\n {\n const previousHoistableRoot = currentHoistableRoot;\n const container = fiber.stateNode.containerInfo;\n currentHoistableRoot = getHoistableRoot(container);\n recursivelyAccumulateSuspenseyCommit(fiber);\n currentHoistableRoot = previousHoistableRoot;\n }\n\n break;\n }\n\n case OffscreenComponent:\n {\n const isHidden = fiber.memoizedState !== null;\n\n if (isHidden) ; else {\n const current = fiber.alternate;\n const wasHidden = current !== null && current.memoizedState !== null;\n\n if (wasHidden) {\n // This tree is being revealed. Visit all newly visible suspensey\n // instances, even if they're in the current tree.\n const prevFlags = suspenseyCommitFlag;\n suspenseyCommitFlag = MaySuspendCommit;\n recursivelyAccumulateSuspenseyCommit(fiber);\n suspenseyCommitFlag = prevFlags;\n } else {\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n }\n\n break;\n }\n\n default:\n {\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n }\n}\n\nfunction detachAlternateSiblings(parentFiber) {\n // A fiber was deleted from this parent fiber, but it's still part of the\n // previous (alternate) parent fiber's list of children. Because children\n // are a linked list, an earlier sibling that's still alive will be\n // connected to the deleted fiber via its `alternate`:\n //\n // live fiber --alternate--> previous live fiber --sibling--> deleted\n // fiber\n //\n // We can't disconnect `alternate` on nodes that haven't been deleted yet,\n // but we can disconnect the `sibling` and `child` pointers.\n const previousFiber = parentFiber.alternate;\n\n if (previousFiber !== null) {\n let detachedChild = previousFiber.child;\n\n if (detachedChild !== null) {\n previousFiber.child = null;\n\n do {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n const detachedSibling = detachedChild.sibling; // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n detachedChild.sibling = null;\n detachedChild = detachedSibling;\n } while (detachedChild !== null);\n }\n }\n}\n\nfunction commitHookPassiveUnmountEffects(finishedWork, nearestMountedAncestor, hookFlags) {\n {\n commitHookEffectListUnmount(hookFlags, finishedWork, nearestMountedAncestor);\n }\n}\n\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n // Deletions effects can be scheduled on any fiber type. They need to happen\n // before the children effects have fired.\n const deletions = parentFiber.deletions;\n\n if ((parentFiber.flags & ChildDeletion) !== NoFlags$1) {\n if (deletions !== null) {\n for (let i = 0; i < deletions.length; i++) {\n const childToDelete = deletions[i]; // TODO: Convert this to use recursion\n\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete, parentFiber);\n }\n }\n\n detachAlternateSiblings(parentFiber);\n }\n\n if (parentFiber.subtreeFlags & PassiveMask) {\n let child = parentFiber.child;\n\n while (child !== null) {\n commitPassiveUnmountOnFiber(child);\n child = child.sibling;\n }\n }\n}\n\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n\n if (finishedWork.flags & Passive$1) {\n commitHookPassiveUnmountEffects(finishedWork, finishedWork.return, Passive | HasEffect);\n }\n\n break;\n }\n\n case OffscreenComponent:\n {\n const instance = finishedWork.stateNode;\n const nextState = finishedWork.memoizedState;\n const isHidden = nextState !== null;\n\n if (isHidden && instance._visibility & OffscreenPassiveEffectsConnected && ( // For backwards compatibility, don't unmount when a tree suspends. In\n // the future we may change this to unmount after a delay.\n finishedWork.return === null || finishedWork.return.tag !== SuspenseComponent)) {\n // The effects are currently connected. Disconnect them.\n // TODO: Add option or heuristic to delay before disconnecting the\n // effects. Then if the tree reappears before the delay has elapsed, we\n // can skip toggling the effects entirely.\n instance._visibility &= ~OffscreenPassiveEffectsConnected;\n recursivelyTraverseDisconnectPassiveEffects(finishedWork);\n } else {\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n }\n }\n}\n\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n // Deletions effects can be scheduled on any fiber type. They need to happen\n // before the children effects have fired.\n const deletions = parentFiber.deletions;\n\n if ((parentFiber.flags & ChildDeletion) !== NoFlags$1) {\n if (deletions !== null) {\n for (let i = 0; i < deletions.length; i++) {\n const childToDelete = deletions[i]; // TODO: Convert this to use recursion\n\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete, parentFiber);\n }\n }\n\n detachAlternateSiblings(parentFiber);\n }\n\n let child = parentFiber.child;\n\n while (child !== null) {\n disconnectPassiveEffect(child);\n child = child.sibling;\n }\n}\n\nfunction disconnectPassiveEffect(finishedWork) {\n switch (finishedWork.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n // TODO: Check PassiveStatic flag\n commitHookPassiveUnmountEffects(finishedWork, finishedWork.return, Passive); // When disconnecting passive effects, we fire the effects in the same\n // order as during a deletiong: parent before child\n\n recursivelyTraverseDisconnectPassiveEffects(finishedWork);\n break;\n }\n\n case OffscreenComponent:\n {\n const instance = finishedWork.stateNode;\n\n if (instance._visibility & OffscreenPassiveEffectsConnected) {\n instance._visibility &= ~OffscreenPassiveEffectsConnected;\n recursivelyTraverseDisconnectPassiveEffects(finishedWork);\n }\n\n break;\n }\n\n default:\n {\n recursivelyTraverseDisconnectPassiveEffects(finishedWork);\n break;\n }\n }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n while (nextEffect !== null) {\n const fiber = nextEffect; // Deletion effects fire in parent -> child order\n commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n const child = fiber.child; // TODO: Only traverse subtree if it has a PassiveStatic flag.\n\n if (child !== null) {\n child.return = fiber;\n nextEffect = child;\n } else {\n commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n }\n }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n while (nextEffect !== null) {\n const fiber = nextEffect;\n const sibling = fiber.sibling;\n const returnFiber = fiber.return; // Recursively traverse the entire deleted tree and clean up fiber fields.\n // This is more aggressive than ideal, and the long term goal is to only\n // have to detach the deleted tree at the root.\n\n detachFiberAfterEffects(fiber);\n\n if (fiber === deletedSubtreeRoot) {\n nextEffect = null;\n return;\n }\n\n if (sibling !== null) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n return;\n }\n\n nextEffect = returnFiber;\n }\n}\n\nfunction commitPassiveUnmountInsideDeletedTreeOnFiber(current, nearestMountedAncestor) {\n switch (current.tag) {\n case FunctionComponent:\n case ForwardRef:\n case SimpleMemoComponent:\n {\n commitHookPassiveUnmountEffects(current, nearestMountedAncestor, Passive);\n break;\n }\n // TODO: run passive unmount effects when unmounting a root.\n // Because passive unmount effects are not currently run,\n // the cache instance owned by the root will never be freed.\n // When effects are run, the cache should be freed here:\n // case HostRoot: {\n // if (enableCache) {\n // const cache = current.memoizedState.cache;\n // releaseCache(cache);\n // }\n // break;\n // }\n\n case LegacyHiddenComponent:\n case OffscreenComponent:\n {\n {\n if (current.memoizedState !== null && current.memoizedState.cachePool !== null) {\n const cache = current.memoizedState.cachePool.pool; // Retain/release the cache used for pending (suspended) nodes.\n // Note that this is only reached in the non-suspended/visible case:\n // when the content is suspended/hidden, the retain/release occurs\n // via the parent Suspense component (see case above).\n\n if (cache != null) {\n retainCache(cache);\n }\n }\n }\n\n break;\n }\n\n case SuspenseComponent:\n {\n\n break;\n }\n\n case CacheComponent:\n {\n {\n const cache = current.memoizedState.cache;\n releaseCache(cache);\n }\n\n break;\n }\n }\n}\n\nfunction getCacheSignal() {\n\n const cache = readContext(CacheContext);\n return cache.controller.signal;\n}\n\nfunction getCacheForType(resourceType) {\n\n const cache = readContext(CacheContext);\n let cacheForType = cache.data.get(resourceType);\n\n if (cacheForType === undefined) {\n cacheForType = resourceType();\n cache.data.set(resourceType, cacheForType);\n }\n\n return cacheForType;\n}\n\nconst DefaultCacheDispatcher = {\n getCacheSignal,\n getCacheForType\n};\n\nconst PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\nconst ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher,\n ReactCurrentCache = ReactSharedInternals.ReactCurrentCache,\n ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner,\n ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig,\n ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\nconst NoContext =\n/* */\n0b000;\nconst BatchedContext =\n/* */\n0b001;\nconst RenderContext =\n/* */\n0b010;\nconst CommitContext =\n/* */\n0b100;\nconst RootInProgress = 0;\nconst RootFatalErrored = 1;\nconst RootErrored = 2;\nconst RootSuspended = 3;\nconst RootSuspendedWithDelay = 4;\nconst RootCompleted = 5;\nconst RootDidNotComplete = 6; // Describes where we are in the React execution stack\n\nlet executionContext = NoContext; // The root we're working on\n\nlet workInProgressRoot = null; // The fiber we're working on\n\nlet workInProgress = null; // The lanes we're rendering\n\nlet workInProgressRootRenderLanes = NoLanes;\nconst NotSuspended = 0;\nconst SuspendedOnError = 1;\nconst SuspendedOnData = 2;\nconst SuspendedOnImmediate = 3;\nconst SuspendedOnInstance = 4;\nconst SuspendedOnInstanceAndReadyToContinue = 5;\nconst SuspendedOnDeprecatedThrowPromise = 6;\nconst SuspendedAndReadyToContinue = 7;\nconst SuspendedOnHydration = 8; // When this is true, the work-in-progress fiber just suspended (or errored) and\n// we've yet to unwind the stack. In some cases, we may yield to the main thread\n// after this happens. If the fiber is pinged before we resume, we can retry\n// immediately instead of unwinding the stack.\n\nlet workInProgressSuspendedReason = NotSuspended;\nlet workInProgressThrownValue = null; // Whether a ping listener was attached during this render. This is slightly\n// different that whether something suspended, because we don't add multiple\n// listeners to a promise we've already seen (per root and lane).\n\nlet workInProgressRootDidAttachPingListener = false; // A contextual version of workInProgressRootRenderLanes. It is a superset of\n// the lanes that we started working on at the root. When we enter a subtree\n// that is currently hidden, we add the lanes that would have committed if\n// the hidden tree hadn't been deferred. This is modified by the\n// HiddenContext module.\n//\n// Most things in the work loop should deal with workInProgressRootRenderLanes.\n// Most things in begin/complete phases should deal with entangledRenderLanes.\n\nlet entangledRenderLanes = NoLanes; // Whether to root completed, errored, suspended, etc.\n\nlet workInProgressRootExitStatus = RootInProgress; // A fatal error, if one is thrown\n\nlet workInProgressRootFatalError = null; // The work left over by components that were visited during this render. Only\n// includes unprocessed updates, not work in bailed out children.\n\nlet workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.\n\nlet workInProgressRootInterleavedUpdatedLanes = NoLanes; // Lanes that were updated during the render phase (*not* an interleaved event).\n\nlet workInProgressRootPingedLanes = NoLanes; // If this lane scheduled deferred work, this is the lane of the deferred task.\n\nlet workInProgressDeferredLane = NoLane; // Errors that are thrown during the render phase.\n\nlet workInProgressRootConcurrentErrors = null; // These are errors that we recovered from without surfacing them to the UI.\n// We will log them once the tree commits.\n\nlet workInProgressRootRecoverableErrors = null; // Tracks when an update occurs during the render phase.\n\nlet workInProgressRootDidIncludeRecursiveRenderUpdate = false; // Thacks when an update occurs during the commit phase. It's a separate\n// variable from the one for renders because the commit phase may run\n// concurrently to a render phase.\n\nlet didIncludeCommitPhaseUpdate = false; // The most recent time we either committed a fallback, or when a fallback was\n// filled in with the resolved UI. This lets us throttle the appearance of new\n// content as it streams in, to minimize jank.\n// TODO: Think of a better name for this variable?\n\nlet globalMostRecentFallbackTime = 0;\nconst FALLBACK_THROTTLE_MS = 300; // The absolute time for when we should start giving up on rendering\n// more and prefer CPU suspense heuristics instead.\n\nlet workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU\n// suspense heuristics and opt out of rendering more content.\n\nconst RENDER_TIMEOUT_MS = 500;\nlet workInProgressTransitions = null;\n\nfunction resetRenderTimer() {\n workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n}\n\nfunction getRenderTargetTime() {\n return workInProgressRootRenderTargetTime;\n}\nlet hasUncaughtError = false;\nlet firstUncaughtError = null;\nlet legacyErrorBoundariesThatAlreadyFailed = null; // Only used when enableProfilerNestedUpdateScheduledHook is true;\nlet rootDoesHavePassiveEffects = false;\nlet rootWithPendingPassiveEffects = null;\nlet pendingPassiveEffectsLanes = NoLanes;\nlet pendingPassiveEffectsRemainingLanes = NoLanes;\nlet pendingPassiveTransitions = null; // Use these to prevent an infinite loop of nested updates\n\nconst NESTED_UPDATE_LIMIT = 50;\nlet nestedUpdateCount = 0;\nlet rootWithNestedUpdates = null;\nfunction getWorkInProgressRoot() {\n return workInProgressRoot;\n}\nfunction getWorkInProgressRootRenderLanes() {\n return workInProgressRootRenderLanes;\n}\nfunction isWorkLoopSuspendedOnData() {\n return workInProgressSuspendedReason === SuspendedOnData;\n}\nfunction requestUpdateLane(fiber) {\n // Special cases\n const mode = fiber.mode;\n\n if ((mode & ConcurrentMode) === NoMode) {\n return SyncLane;\n } else if ((executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n // This is a render phase update. These are not officially supported. The\n // old behavior is to give this the same \"thread\" (lanes) as\n // whatever is currently rendering. So if you call `setState` on a component\n // that happens later in the same render, it will flush. Ideally, we want to\n // remove the special case and treat them as if they came from an\n // interleaved event. Regardless, this pattern is not officially supported.\n // This behavior is only a fallback. The flag only exists until we can roll\n // out the setState warning, since existing code might accidentally rely on\n // the current behavior.\n return pickArbitraryLane(workInProgressRootRenderLanes);\n }\n\n const transition = requestCurrentTransition();\n\n if (transition !== null) {\n\n const actionScopeLane = peekEntangledActionLane();\n return actionScopeLane !== NoLane ? // We're inside an async action scope. Reuse the same lane.\n actionScopeLane : // We may or may not be inside an async action scope. If we are, this\n // is the first update in that scope. Either way, we need to get a\n // fresh transition lane.\n requestTransitionLane();\n } // Updates originating inside certain React methods, like flushSync, have\n // their priority set by tracking it with a context variable.\n //\n // The opaque type returned by the host config is internally a lane, so we can\n // use that directly.\n // TODO: Move this type conversion to the event priority module.\n\n\n const updateLane = getCurrentUpdatePriority();\n\n if (updateLane !== NoLane) {\n return updateLane;\n } // This update originated outside React. Ask the host environment for an\n // appropriate priority, based on the type of event.\n //\n // The opaque type returned by the host config is internally a lane, so we can\n // use that directly.\n // TODO: Move this type conversion to the event priority module.\n\n\n const eventLane = getCurrentEventPriority();\n return eventLane;\n}\n\nfunction requestRetryLane(fiber) {\n // This is a fork of `requestUpdateLane` designed specifically for Suspense\n // \"retries\" — a special update that attempts to flip a Suspense boundary\n // from its placeholder state to its primary/resolved state.\n // Special cases\n const mode = fiber.mode;\n\n if ((mode & ConcurrentMode) === NoMode) {\n return SyncLane;\n }\n\n return claimNextRetryLane();\n}\n\nfunction requestDeferredLane() {\n if (workInProgressDeferredLane === NoLane) {\n // If there are multiple useDeferredValue hooks in the same render, the\n // tasks that they spawn should all be batched together, so they should all\n // receive the same lane.\n // Check the priority of the current render to decide the priority of the\n // deferred task.\n // OffscreenLane is used for prerendering, but we also use OffscreenLane\n // for incremental hydration. It's given the lowest priority because the\n // initial HTML is the same as the final UI. But useDeferredValue during\n // hydration is an exception — we need to upgrade the UI to the final\n // value. So if we're currently hydrating, we treat it like a transition.\n const isPrerendering = includesSomeLane(workInProgressRootRenderLanes, OffscreenLane) && !getIsHydrating();\n\n if (isPrerendering) {\n // There's only one OffscreenLane, so if it contains deferred work, we\n // should just reschedule using the same lane.\n workInProgressDeferredLane = OffscreenLane;\n } else {\n // Everything else is spawned as a transition.\n workInProgressDeferredLane = claimNextTransitionLane();\n }\n } // Mark the parent Suspense boundary so it knows to spawn the deferred lane.\n\n\n const suspenseHandler = getSuspenseHandler();\n\n if (suspenseHandler !== null) {\n // TODO: As an optimization, we shouldn't entangle the lanes at the root; we\n // can entangle them using the baseLanes of the Suspense boundary instead.\n // We only need to do something special if there's no Suspense boundary.\n suspenseHandler.flags |= DidDefer;\n }\n\n return workInProgressDeferredLane;\n}\nfunction peekDeferredLane() {\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n // finish loading.\n\n\n if ( // Suspended render phase\n root === workInProgressRoot && workInProgressSuspendedReason === SuspendedOnData || // Suspended commit phase\n root.cancelPendingCommit !== null) {\n // The incoming update might unblock the current render. Interrupt the\n // current attempt and restart from the top.\n prepareFreshStack(root, NoLanes);\n markRootSuspended(root, workInProgressRootRenderLanes, workInProgressDeferredLane);\n } // Mark that the root has a pending update.\n\n\n markRootUpdated(root, lane);\n\n if ((executionContext & RenderContext) !== NoLanes && root === workInProgressRoot) ; else {\n\n if (root === workInProgressRoot) {\n // Received an update to a tree that's in the middle of rendering. Mark\n // that there was an interleaved update work on this root.\n if ((executionContext & RenderContext) === NoContext) {\n workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n }\n\n if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n // The root already suspended with a delay, which means this render\n // definitely won't finish. Since we have a new update, let's mark it as\n // suspended now, right before marking the incoming update. This has the\n // effect of interrupting the current render and switching to the update.\n // TODO: Make sure this doesn't override pings that happen while we've\n // already started rendering.\n markRootSuspended(root, workInProgressRootRenderLanes, workInProgressDeferredLane);\n }\n }\n\n ensureRootIsScheduled(root);\n\n if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode) {\n {\n // Flush the synchronous work now, unless we're already working or inside\n // a batch. This is intentionally inside scheduleUpdateOnFiber instead of\n // scheduleCallbackForFiber to preserve the ability to schedule a callback\n // without immediately flushing it. We only do this for user-initiated\n // updates, to preserve historical behavior of legacy mode.\n resetRenderTimer();\n flushSyncWorkOnLegacyRootsOnly();\n }\n }\n }\n}\nfunction scheduleInitialHydrationOnRoot(root, lane) {\n // This is a special fork of scheduleUpdateOnFiber that is only used to\n // schedule the initial hydration of a root that has just been created. Most\n // of the stuff in scheduleUpdateOnFiber can be skipped.\n //\n // The main reason for this separate path, though, is to distinguish the\n // initial children from subsequent updates. In fully client-rendered roots\n // (createRoot instead of hydrateRoot), all top-level renders are modeled as\n // updates, but hydration roots are special because the initial render must\n // match what was rendered on the server.\n const current = root.current;\n current.lanes = lane;\n markRootUpdated(root, lane);\n ensureRootIsScheduled(root);\n}\nfunction isUnsafeClassRenderPhaseUpdate(fiber) {\n // Check if this is a render phase update. Only called by class components,\n // which special (deprecated) behavior for UNSAFE_componentWillReceive props.\n return (executionContext & RenderContext) !== NoContext;\n} // This is the entry point for every concurrent task, i.e. anything that\n// goes through Scheduler.\n\nfunction performConcurrentWorkOnRoot(root, didTimeout) {\n\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n throw Error(formatProdErrorMessage(327));\n } // Flush any pending passive effects before deciding which lanes to work on,\n // in case they schedule additional work.\n\n\n const originalCallbackNode = root.callbackNode;\n const didFlushPassiveEffects = flushPassiveEffects();\n\n if (didFlushPassiveEffects) {\n // Something in the passive effect phase may have canceled the current task.\n // Check if the task node for this root was changed.\n if (root.callbackNode !== originalCallbackNode) {\n // The current task was canceled. Exit. We don't need to call\n // `ensureRootIsScheduled` because the check above implies either that\n // there's a new task, or that there's no remaining work on this root.\n return null;\n }\n } // Determine the next lanes to work on, using the fields stored\n // on the root.\n // TODO: This was already computed in the caller. Pass it as an argument.\n\n\n let lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n if (lanes === NoLanes) {\n // Defensive coding. This is never expected to happen.\n return null;\n } // We disable time-slicing in some cases: if the work has been CPU-bound\n // for too long (\"expired\" work, to prevent starvation), or we're in\n // sync-updates-by-default mode.\n // TODO: We only check `didTimeout` defensively, to account for a Scheduler\n // bug we're still investigating. Once the bug in Scheduler is fixed,\n // we can remove this, since we track expiration ourselves.\n\n\n const shouldTimeSlice = !includesBlockingLane(root, lanes) && !includesExpiredLane(root, lanes) && (!didTimeout);\n let exitStatus = shouldTimeSlice ? renderRootConcurrent(root, lanes) : renderRootSync(root, lanes);\n\n if (exitStatus !== RootInProgress) {\n let renderWasConcurrent = shouldTimeSlice;\n\n do {\n if (exitStatus === RootDidNotComplete) {\n // The render unwound without completing the tree. This happens in special\n // cases where need to exit the current render without producing a\n // consistent tree or committing.\n markRootSuspended(root, lanes, NoLane);\n } else {\n // The render completed.\n // Check if this render may have yielded to a concurrent event, and if so,\n // confirm that any newly rendered stores are consistent.\n // TODO: It's possible that even a concurrent render may never have yielded\n // to the main thread, if it was fast enough, or if it expired. We could\n // skip the consistency check in that case, too.\n const finishedWork = root.current.alternate;\n\n if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n // A store was mutated in an interleaved event. Render again,\n // synchronously, to block further mutations.\n exitStatus = renderRootSync(root, lanes); // We assume the tree is now consistent because we didn't yield to any\n // concurrent events.\n\n renderWasConcurrent = false; // Need to check the exit status again.\n\n continue;\n } // Check if something threw\n\n\n if (exitStatus === RootErrored) {\n const originallyAttemptedLanes = lanes;\n const errorRetryLanes = getLanesToRetrySynchronouslyOnError(root, originallyAttemptedLanes);\n\n if (errorRetryLanes !== NoLanes) {\n lanes = errorRetryLanes;\n exitStatus = recoverFromConcurrentError(root, originallyAttemptedLanes, errorRetryLanes);\n renderWasConcurrent = false;\n }\n }\n\n if (exitStatus === RootFatalErrored) {\n const fatalError = workInProgressRootFatalError;\n prepareFreshStack(root, NoLanes);\n markRootSuspended(root, lanes, NoLane);\n ensureRootIsScheduled(root);\n throw fatalError;\n } // We now have a consistent tree. The next step is either to commit it,\n // or, if something suspended, wait to commit it after a timeout.\n\n\n root.finishedWork = finishedWork;\n root.finishedLanes = lanes;\n finishConcurrentRender(root, exitStatus, finishedWork, lanes);\n }\n\n break;\n } while (true);\n }\n\n ensureRootIsScheduled(root);\n return getContinuationForRoot(root, originalCallbackNode);\n}\n\nfunction recoverFromConcurrentError(root, originallyAttemptedLanes, errorRetryLanes) {\n // If an error occurred during hydration, discard server response and fall\n // back to client side render.\n // Before rendering again, save the errors from the previous attempt.\n const errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n const wasRootDehydrated = isRootDehydrated(root);\n\n if (wasRootDehydrated) {\n // The shell failed to hydrate. Set a flag to force a client rendering\n // during the next attempt. To do this, we call prepareFreshStack now\n // to create the root work-in-progress fiber. This is a bit weird in terms\n // of factoring, because it relies on renderRootSync not calling\n // prepareFreshStack again in the call below, which happens because the\n // root and lanes haven't changed.\n //\n // TODO: I think what we should do is set ForceClientRender inside\n // throwException, like we do for nested Suspense boundaries. The reason\n // it's here instead is so we can switch to the synchronous work loop, too.\n // Something to consider for a future refactor.\n const rootWorkInProgress = prepareFreshStack(root, errorRetryLanes);\n rootWorkInProgress.flags |= ForceClientRender;\n }\n\n const exitStatus = renderRootSync(root, errorRetryLanes);\n\n if (exitStatus !== RootErrored) {\n // Successfully finished rendering on retry\n if (workInProgressRootDidAttachPingListener && !wasRootDehydrated) {\n // During the synchronous render, we attached additional ping listeners.\n // This is highly suggestive of an uncached promise (though it's not the\n // only reason this would happen). If it was an uncached promise, then\n // it may have masked a downstream error from ocurring without actually\n // fixing it. Example:\n //\n // use(Promise.resolve('uncached'))\n // throw new Error('Oops!')\n //\n // When this happens, there's a conflict between blocking potential\n // concurrent data races and unwrapping uncached promise values. We\n // have to choose one or the other. Because the data race recovery is\n // a last ditch effort, we'll disable it.\n root.errorRecoveryDisabledLanes = mergeLanes(root.errorRecoveryDisabledLanes, originallyAttemptedLanes); // Mark the current render as suspended and force it to restart. Once\n // these lanes finish successfully, we'll re-enable the error recovery\n // mechanism for subsequent updates.\n\n workInProgressRootInterleavedUpdatedLanes |= originallyAttemptedLanes;\n return RootSuspendedWithDelay;\n } // The errors from the failed first attempt have been recovered. Add\n // them to the collection of recoverable errors. We'll log them in the\n // commit phase.\n\n\n const errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = errorsFromFirstAttempt; // The errors from the second attempt should be queued after the errors\n // from the first attempt, to preserve the causal sequence.\n\n if (errorsFromSecondAttempt !== null) {\n queueRecoverableErrors(errorsFromSecondAttempt);\n }\n }\n\n return exitStatus;\n}\n\nfunction queueRecoverableErrors(errors) {\n if (workInProgressRootRecoverableErrors === null) {\n workInProgressRootRecoverableErrors = errors;\n } else {\n // $FlowFixMe[method-unbinding]\n workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n }\n}\n\nfunction finishConcurrentRender(root, exitStatus, finishedWork, lanes) {\n // TODO: The fact that most of these branches are identical suggests that some\n // of the exit statuses are not best modeled as exit statuses and should be\n // tracked orthogonally.\n switch (exitStatus) {\n case RootInProgress:\n case RootFatalErrored:\n {\n throw Error(formatProdErrorMessage(345));\n }\n\n case RootSuspendedWithDelay:\n {\n if (includesOnlyTransitions(lanes)) {\n // This is a transition, so we should exit without committing a\n // placeholder and without scheduling a timeout. Delay indefinitely\n // until we receive more data.\n markRootSuspended(root, lanes, workInProgressDeferredLane);\n return;\n } // Commit the placeholder.\n\n\n break;\n }\n\n case RootErrored:\n case RootSuspended:\n case RootCompleted:\n {\n break;\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(329));\n }\n }\n\n {\n if (includesOnlyRetries(lanes) && (alwaysThrottleRetries )) {\n // This render only included retries, no updates. Throttle committing\n // retries so that we don't show too many loading states too quickly.\n const msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.\n\n if (msUntilTimeout > 10) {\n markRootSuspended(root, lanes, workInProgressDeferredLane);\n const nextLanes = getNextLanes(root, NoLanes);\n\n if (nextLanes !== NoLanes) {\n // There's additional work we can do on this root. We might as well\n // attempt to work on that while we're suspended.\n return;\n } // The render is suspended, it hasn't timed out, and there's no\n // lower priority work to do. Instead of committing the fallback\n // immediately, wait for more data to arrive.\n // TODO: Combine retry throttling with Suspensey commits. Right now they\n // run one after the other.\n\n\n root.timeoutHandle = scheduleTimeout(commitRootWhenReady.bind(null, root, finishedWork, workInProgressRootRecoverableErrors, workInProgressTransitions, workInProgressRootDidIncludeRecursiveRenderUpdate, lanes, workInProgressDeferredLane), msUntilTimeout);\n return;\n }\n }\n\n commitRootWhenReady(root, finishedWork, workInProgressRootRecoverableErrors, workInProgressTransitions, workInProgressRootDidIncludeRecursiveRenderUpdate, lanes, workInProgressDeferredLane);\n }\n}\n\nfunction commitRootWhenReady(root, finishedWork, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, lanes, spawnedLane) {\n // TODO: Combine retry throttling with Suspensey commits. Right now they run\n // one after the other.\n if (includesOnlyNonUrgentLanes(lanes)) {\n // Before committing, ask the renderer whether the host tree is ready.\n // If it's not, we'll wait until it notifies us.\n startSuspendingCommit(); // This will walk the completed fiber tree and attach listeners to all\n // the suspensey resources. The renderer is responsible for accumulating\n // all the load events. This all happens in a single synchronous\n // transaction, so it track state in its own module scope.\n\n accumulateSuspenseyCommit(finishedWork); // At the end, ask the renderer if it's ready to commit, or if we should\n // suspend. If it's not ready, it will return a callback to subscribe to\n // a ready event.\n\n const schedulePendingCommit = waitForCommitToBeReady();\n\n if (schedulePendingCommit !== null) {\n // NOTE: waitForCommitToBeReady returns a subscribe function so that we\n // only allocate a function if the commit isn't ready yet. The other\n // pattern would be to always pass a callback to waitForCommitToBeReady.\n // Not yet ready to commit. Delay the commit until the renderer notifies\n // us that it's ready. This will be canceled if we start work on the\n // root again.\n root.cancelPendingCommit = schedulePendingCommit(commitRoot.bind(null, root, recoverableErrors, transitions, didIncludeRenderPhaseUpdate));\n markRootSuspended(root, lanes, spawnedLane);\n return;\n }\n } // Otherwise, commit immediately.\n\n\n commitRoot(root, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, spawnedLane);\n}\n\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n // Search the rendered tree for external store reads, and check whether the\n // stores were mutated in a concurrent event. Intentionally using an iterative\n // loop instead of recursion so we can exit early.\n let node = finishedWork;\n\n while (true) {\n if (node.flags & StoreConsistency) {\n const updateQueue = node.updateQueue;\n\n if (updateQueue !== null) {\n const checks = updateQueue.stores;\n\n if (checks !== null) {\n for (let i = 0; i < checks.length; i++) {\n const check = checks[i];\n const getSnapshot = check.getSnapshot;\n const renderedValue = check.value;\n\n try {\n if (!objectIs(getSnapshot(), renderedValue)) {\n // Found an inconsistent store.\n return false;\n }\n } catch (error) {\n // If `getSnapshot` throws, return `false`. This will schedule\n // a re-render, and the error will be rethrown during render.\n return false;\n }\n }\n }\n }\n }\n\n const child = node.child;\n\n if (node.subtreeFlags & StoreConsistency && child !== null) {\n child.return = node;\n node = child;\n continue;\n }\n\n if (node === finishedWork) {\n return true;\n }\n\n while (node.sibling === null) {\n if (node.return === null || node.return === finishedWork) {\n return true;\n }\n\n node = node.return;\n }\n\n node.sibling.return = node.return;\n node = node.sibling;\n } // Flow doesn't know this is unreachable, but eslint does\n // eslint-disable-next-line no-unreachable\n\n\n return true;\n} // The extra indirections around markRootUpdated and markRootSuspended is\n// needed to avoid a circular dependency between this module and\n// ReactFiberLane. There's probably a better way to split up these modules and\n// avoid this problem. Perhaps all the root-marking functions should move into\n// the work loop.\n\n\nfunction markRootUpdated(root, updatedLanes) {\n markRootUpdated$1(root, updatedLanes);\n\n {\n // Check for recursive updates\n if (executionContext & RenderContext) {\n workInProgressRootDidIncludeRecursiveRenderUpdate = true;\n } else if (executionContext & CommitContext) {\n didIncludeCommitPhaseUpdate = true;\n }\n\n throwIfInfiniteUpdateLoopDetected();\n }\n}\n\nfunction markRootPinged(root, pingedLanes) {\n markRootPinged$1(root, pingedLanes);\n\n {\n // Check for recursive pings. Pings are conceptually different from updates in\n // other contexts but we call it an \"update\" in this context because\n // repeatedly pinging a suspended render can cause a recursive render loop.\n // The relevant property is that it can result in a new render attempt\n // being scheduled.\n if (executionContext & RenderContext) {\n workInProgressRootDidIncludeRecursiveRenderUpdate = true;\n } else if (executionContext & CommitContext) {\n didIncludeCommitPhaseUpdate = true;\n }\n\n throwIfInfiniteUpdateLoopDetected();\n }\n}\n\nfunction markRootSuspended(root, suspendedLanes, spawnedLane) {\n // When suspending, we should always exclude lanes that were pinged or (more\n // rarely, since we try to avoid it) updated during the render phase.\n suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n\n markRootSuspended$1(root, suspendedLanes, spawnedLane);\n} // This is the entry point for synchronous tasks that don't go\n// through Scheduler\n\n\nfunction performSyncWorkOnRoot(root, lanes) {\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n throw Error(formatProdErrorMessage(327));\n }\n\n const didFlushPassiveEffects = flushPassiveEffects();\n\n if (didFlushPassiveEffects) {\n // If passive effects were flushed, exit to the outer work loop in the root\n // scheduler, so we can recompute the priority.\n // TODO: We don't actually need this `ensureRootIsScheduled` call because\n // this path is only reachable if the root is already part of the schedule.\n // I'm including it only for consistency with the other exit points from\n // this function. Can address in a subsequent refactor.\n ensureRootIsScheduled(root);\n return null;\n }\n\n let exitStatus = renderRootSync(root, lanes);\n\n if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n // If something threw an error, try rendering one more time. We'll render\n // synchronously to block concurrent data mutations, and we'll includes\n // all pending updates are included. If it still fails after the second\n // attempt, we'll give up and commit the resulting tree.\n const originallyAttemptedLanes = lanes;\n const errorRetryLanes = getLanesToRetrySynchronouslyOnError(root, originallyAttemptedLanes);\n\n if (errorRetryLanes !== NoLanes) {\n lanes = errorRetryLanes;\n exitStatus = recoverFromConcurrentError(root, originallyAttemptedLanes, errorRetryLanes);\n }\n }\n\n if (exitStatus === RootFatalErrored) {\n const fatalError = workInProgressRootFatalError;\n prepareFreshStack(root, NoLanes);\n markRootSuspended(root, lanes, NoLane);\n ensureRootIsScheduled(root);\n throw fatalError;\n }\n\n if (exitStatus === RootDidNotComplete) {\n // The render unwound without completing the tree. This happens in special\n // cases where need to exit the current render without producing a\n // consistent tree or committing.\n markRootSuspended(root, lanes, workInProgressDeferredLane);\n ensureRootIsScheduled(root);\n return null;\n } // We now have a consistent tree. Because this is a sync render, we\n // will commit it even if something suspended.\n\n\n const finishedWork = root.current.alternate;\n root.finishedWork = finishedWork;\n root.finishedLanes = lanes;\n commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions, workInProgressRootDidIncludeRecursiveRenderUpdate, workInProgressDeferredLane); // Before exiting, make sure there's a callback scheduled for the next\n // pending level.\n\n ensureRootIsScheduled(root);\n return null;\n}\nfunction flushRoot(root, lanes) {\n if (lanes !== NoLanes) {\n upgradePendingLanesToSync(root, lanes);\n ensureRootIsScheduled(root);\n\n if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n resetRenderTimer(); // TODO: For historical reasons this flushes all sync work across all\n // roots. It shouldn't really matter either way, but we could change this\n // to only flush the given root.\n\n flushSyncWorkOnAllRoots();\n }\n }\n}\nfunction getExecutionContext() {\n return executionContext;\n}\nfunction batchedUpdates$1(fn, a) {\n const prevExecutionContext = executionContext;\n executionContext |= BatchedContext;\n\n try {\n return fn(a);\n } finally {\n executionContext = prevExecutionContext; // If there were legacy sync updates, flush them at the end of the outer\n // most batchedUpdates-like method.\n\n if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n !(false )) {\n resetRenderTimer();\n flushSyncWorkOnLegacyRootsOnly();\n }\n }\n}\n// Warning, this opts-out of checking the function body.\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\n// eslint-disable-next-line no-redeclare\n\nfunction flushSync$1(fn) {\n // In legacy mode, we flush pending passive effects at the beginning of the\n // next event, not at the end of the previous one.\n if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n flushPassiveEffects();\n }\n\n const prevExecutionContext = executionContext;\n executionContext |= BatchedContext;\n const prevTransition = ReactCurrentBatchConfig$1.transition;\n const previousPriority = getCurrentUpdatePriority();\n\n try {\n ReactCurrentBatchConfig$1.transition = null;\n setCurrentUpdatePriority(DiscreteEventPriority);\n\n if (fn) {\n return fn();\n } else {\n return undefined;\n }\n } finally {\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig$1.transition = prevTransition;\n executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.\n // Note that this will happen even if batchedUpdates is higher up\n // the stack.\n\n if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n flushSyncWorkOnAllRoots();\n }\n }\n}\n// hidden subtree. The stack logic is managed there because that's the only\n// place that ever modifies it. Which module it lives in doesn't matter for\n// performance because this function will get inlined regardless\n\nfunction setEntangledRenderLanes(newEntangledRenderLanes) {\n entangledRenderLanes = newEntangledRenderLanes;\n}\nfunction getEntangledRenderLanes() {\n return entangledRenderLanes;\n}\n\nfunction resetWorkInProgressStack() {\n if (workInProgress === null) return;\n let interruptedWork;\n\n if (workInProgressSuspendedReason === NotSuspended) {\n // Normal case. Work-in-progress hasn't started yet. Unwind all\n // its parents.\n interruptedWork = workInProgress.return;\n } else {\n // Work-in-progress is in suspended state. Reset the work loop and unwind\n // both the suspended fiber and all its parents.\n resetSuspendedWorkLoopOnUnwind(workInProgress);\n interruptedWork = workInProgress;\n }\n\n while (interruptedWork !== null) {\n const current = interruptedWork.alternate;\n unwindInterruptedWork(current, interruptedWork);\n interruptedWork = interruptedWork.return;\n }\n\n workInProgress = null;\n}\n\nfunction prepareFreshStack(root, lanes) {\n root.finishedWork = null;\n root.finishedLanes = NoLanes;\n const timeoutHandle = root.timeoutHandle;\n\n if (timeoutHandle !== noTimeout) {\n // The root previous suspended and scheduled a timeout to commit a fallback\n // state. Now that we have additional work, cancel the timeout.\n root.timeoutHandle = noTimeout; // $FlowFixMe[incompatible-call] Complains noTimeout is not a TimeoutID, despite the check above\n\n cancelTimeout(timeoutHandle);\n }\n\n const cancelPendingCommit = root.cancelPendingCommit;\n\n if (cancelPendingCommit !== null) {\n root.cancelPendingCommit = null;\n cancelPendingCommit();\n }\n\n resetWorkInProgressStack();\n workInProgressRoot = root;\n const rootWorkInProgress = createWorkInProgress(root.current, null);\n workInProgress = rootWorkInProgress;\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n workInProgressRootDidAttachPingListener = false;\n workInProgressRootExitStatus = RootInProgress;\n workInProgressRootFatalError = null;\n workInProgressRootSkippedLanes = NoLanes;\n workInProgressRootInterleavedUpdatedLanes = NoLanes;\n workInProgressRootPingedLanes = NoLanes;\n workInProgressDeferredLane = NoLane;\n workInProgressRootConcurrentErrors = null;\n workInProgressRootRecoverableErrors = null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = false; // Get the lanes that are entangled with whatever we're about to render. We\n // track these separately so we can distinguish the priority of the render\n // task from the priority of the lanes it is entangled with. For example, a\n // transition may not be allowed to finish unless it includes the Sync lane,\n // which is currently suspended. We should be able to render the Transition\n // and Sync lane in the same batch, but at Transition priority, because the\n // Sync lane already suspended.\n\n entangledRenderLanes = getEntangledLanes(root, lanes);\n finishQueueingConcurrentUpdates();\n\n return rootWorkInProgress;\n}\n\nfunction resetSuspendedWorkLoopOnUnwind(fiber) {\n // Reset module-level state that was set during the render phase.\n resetContextDependencies();\n resetHooksOnUnwind(fiber);\n resetChildReconcilerOnUnwind();\n}\n\nfunction handleThrow(root, thrownValue) {\n // A component threw an exception. Usually this is because it suspended, but\n // it also includes regular program errors.\n //\n // We're either going to unwind the stack to show a Suspense or error\n // boundary, or we're going to replay the component again. Like after a\n // promise resolves.\n //\n // Until we decide whether we're going to unwind or replay, we should preserve\n // the current state of the work loop without resetting anything.\n //\n // If we do decide to unwind the stack, module-level variables will be reset\n // in resetSuspendedWorkLoopOnUnwind.\n // These should be reset immediately because they're only supposed to be set\n // when React is executing user code.\n resetHooksAfterThrow();\n ReactCurrentOwner.current = null;\n\n if (thrownValue === SuspenseException) {\n // This is a special type of exception used for Suspense. For historical\n // reasons, the rest of the Suspense implementation expects the thrown value\n // to be a thenable, because before `use` existed that was the (unstable)\n // API for suspending. This implementation detail can change later, once we\n // deprecate the old API in favor of `use`.\n thrownValue = getSuspendedThenable();\n workInProgressSuspendedReason = shouldRemainOnPreviousScreen() && // Check if there are other pending updates that might possibly unblock this\n // component from suspending. This mirrors the check in\n // renderDidSuspendDelayIfPossible. We should attempt to unify them somehow.\n // TODO: Consider unwinding immediately, using the\n // SuspendedOnHydration mechanism.\n !includesNonIdleWork(workInProgressRootSkippedLanes) && !includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes) ? // Suspend work loop until data resolves\n SuspendedOnData : // Don't suspend work loop, except to check if the data has\n // immediately resolved (i.e. in a microtask). Otherwise, trigger the\n // nearest Suspense fallback.\n SuspendedOnImmediate;\n } else if (thrownValue === SuspenseyCommitException) {\n thrownValue = getSuspendedThenable();\n workInProgressSuspendedReason = SuspendedOnInstance;\n } else if (thrownValue === SelectiveHydrationException) {\n // An update flowed into a dehydrated boundary. Before we can apply the\n // update, we need to finish hydrating. Interrupt the work-in-progress\n // render so we can restart at the hydration lane.\n //\n // The ideal implementation would be able to switch contexts without\n // unwinding the current stack.\n //\n // We could name this something more general but as of now it's the only\n // case where we think this should happen.\n workInProgressSuspendedReason = SuspendedOnHydration;\n } else {\n // This is a regular error.\n const isWakeable = thrownValue !== null && typeof thrownValue === 'object' && typeof thrownValue.then === 'function';\n workInProgressSuspendedReason = isWakeable ? // A wakeable object was thrown by a legacy Suspense implementation.\n // This has slightly different behavior than suspending with `use`.\n SuspendedOnDeprecatedThrowPromise : // This is a regular error. If something earlier in the component already\n // suspended, we must clear the thenable state to unblock the work loop.\n SuspendedOnError;\n }\n\n workInProgressThrownValue = thrownValue;\n const erroredWork = workInProgress;\n\n if (erroredWork === null) {\n // This is a fatal error\n workInProgressRootExitStatus = RootFatalErrored;\n workInProgressRootFatalError = thrownValue;\n return;\n }\n}\n\nfunction shouldRemainOnPreviousScreen() {\n // This is asking whether it's better to suspend the transition and remain\n // on the previous screen, versus showing a fallback as soon as possible. It\n // takes into account both the priority of render and also whether showing a\n // fallback would produce a desirable user experience.\n const handler = getSuspenseHandler();\n\n if (handler === null) {\n // There's no Suspense boundary that can provide a fallback. We have no\n // choice but to remain on the previous screen.\n // NOTE: We do this even for sync updates, for lack of any better option. In\n // the future, we may change how we handle this, like by putting the whole\n // root into a \"detached\" mode.\n return true;\n } // TODO: Once `use` has fully replaced the `throw promise` pattern, we should\n // be able to remove the equivalent check in finishConcurrentRender, and rely\n // just on this one.\n\n\n if (includesOnlyTransitions(workInProgressRootRenderLanes)) {\n if (getShellBoundary() === null) {\n // We're rendering inside the \"shell\" of the app. Activating the nearest\n // fallback would cause visible content to disappear. It's better to\n // suspend the transition and remain on the previous screen.\n return true;\n } else {\n // We're rendering content that wasn't part of the previous screen.\n // Rather than block the transition, it's better to show a fallback as\n // soon as possible. The appearance of any nested fallbacks will be\n // throttled to avoid jank.\n return false;\n }\n }\n\n if (includesOnlyRetries(workInProgressRootRenderLanes) || // In this context, an OffscreenLane counts as a Retry\n // TODO: It's become increasingly clear that Retries and Offscreen are\n // deeply connected. They probably can be unified further.\n includesSomeLane(workInProgressRootRenderLanes, OffscreenLane)) {\n // During a retry, we can suspend rendering if the nearest Suspense boundary\n // is the boundary of the \"shell\", because we're guaranteed not to block\n // any new content from appearing.\n //\n // The reason we must check if this is a retry is because it guarantees\n // that suspending the work loop won't block an actual update, because\n // retries don't \"update\" anything; they fill in fallbacks that were left\n // behind by a previous transition.\n return handler === getShellBoundary();\n } // For all other Lanes besides Transitions and Retries, we should not wait\n // for the data to load.\n\n\n return false;\n}\n\nfunction pushDispatcher(container) {\n const prevDispatcher = ReactCurrentDispatcher.current;\n ReactCurrentDispatcher.current = ContextOnlyDispatcher;\n\n if (prevDispatcher === null) {\n // The React isomorphic package does not include a default dispatcher.\n // Instead the first renderer will lazily attach one, in order to give\n // nicer error messages.\n return ContextOnlyDispatcher;\n } else {\n return prevDispatcher;\n }\n}\n\nfunction popDispatcher(prevDispatcher) {\n ReactCurrentDispatcher.current = prevDispatcher;\n}\n\nfunction pushCacheDispatcher() {\n {\n const prevCacheDispatcher = ReactCurrentCache.current;\n ReactCurrentCache.current = DefaultCacheDispatcher;\n return prevCacheDispatcher;\n }\n}\n\nfunction popCacheDispatcher(prevCacheDispatcher) {\n {\n ReactCurrentCache.current = prevCacheDispatcher;\n }\n}\n\nfunction markCommitTimeOfFallback() {\n globalMostRecentFallbackTime = now();\n}\nfunction markSkippedUpdateLanes(lane) {\n workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n}\nfunction renderDidSuspend() {\n if (workInProgressRootExitStatus === RootInProgress) {\n workInProgressRootExitStatus = RootSuspended;\n }\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = RootSuspendedWithDelay; // Check if there are updates that we skipped tree that might have unblocked\n // this render.\n\n if ((includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes)) && workInProgressRoot !== null) {\n // Mark the current render as suspended so that we switch to working on\n // the updates that were skipped. Usually we only suspend at the end of\n // the render phase.\n // TODO: We should probably always mark the root as suspended immediately\n // (inside this function), since by suspending at the end of the render\n // phase introduces a potential mistake where we suspend lanes that were\n // pinged or updated while we were rendering.\n // TODO: Consider unwinding immediately, using the\n // SuspendedOnHydration mechanism.\n markRootSuspended(workInProgressRoot, workInProgressRootRenderLanes, workInProgressDeferredLane);\n }\n}\nfunction renderDidError(error) {\n if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n workInProgressRootExitStatus = RootErrored;\n }\n\n if (workInProgressRootConcurrentErrors === null) {\n workInProgressRootConcurrentErrors = [error];\n } else {\n workInProgressRootConcurrentErrors.push(error);\n }\n} // Called during render to determine if anything has suspended.\n// Returns false if we're not sure.\n\nfunction renderHasNotSuspendedYet() {\n // If something errored or completed, we can't really be sure,\n // so those are false.\n return workInProgressRootExitStatus === RootInProgress;\n} // TODO: Over time, this function and renderRootConcurrent have become more\n// and more similar. Not sure it makes sense to maintain forked paths. Consider\n// unifying them again.\n\nfunction renderRootSync(root, lanes) {\n const prevExecutionContext = executionContext;\n executionContext |= RenderContext;\n const prevDispatcher = pushDispatcher();\n const prevCacheDispatcher = pushCacheDispatcher(); // If the root or lanes have changed, throw out the existing stack\n // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n\n workInProgressTransitions = getTransitionsForLanes();\n prepareFreshStack(root, lanes);\n }\n\n let didSuspendInShell = false;\n\n outer: do {\n try {\n if (workInProgressSuspendedReason !== NotSuspended && workInProgress !== null) {\n // The work loop is suspended. During a synchronous render, we don't\n // yield to the main thread. Immediately unwind the stack. This will\n // trigger either a fallback or an error boundary.\n // TODO: For discrete and \"default\" updates (anything that's not\n // flushSync), we want to wait for the microtasks the flush before\n // unwinding. Will probably implement this using renderRootConcurrent,\n // or merge renderRootSync and renderRootConcurrent into the same\n // function and fork the behavior some other way.\n const unitOfWork = workInProgress;\n const thrownValue = workInProgressThrownValue;\n\n switch (workInProgressSuspendedReason) {\n case SuspendedOnHydration:\n {\n // Selective hydration. An update flowed into a dehydrated tree.\n // Interrupt the current render so the work loop can switch to the\n // hydration lane.\n resetWorkInProgressStack();\n workInProgressRootExitStatus = RootDidNotComplete;\n break outer;\n }\n\n case SuspendedOnImmediate:\n case SuspendedOnData:\n {\n if (!didSuspendInShell && getSuspenseHandler() === null) {\n didSuspendInShell = true;\n } // Intentional fallthrough\n\n }\n\n default:\n {\n // Unwind then continue with the normal work loop.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue);\n break;\n }\n }\n }\n\n workLoopSync();\n break;\n } catch (thrownValue) {\n handleThrow(root, thrownValue);\n }\n } while (true); // Check if something suspended in the shell. We use this to detect an\n // infinite ping loop caused by an uncached promise.\n //\n // Only increment this counter once per synchronous render attempt across the\n // whole tree. Even if there are many sibling components that suspend, this\n // counter only gets incremented once.\n\n\n if (didSuspendInShell) {\n root.shellSuspendCounter++;\n }\n\n resetContextDependencies();\n executionContext = prevExecutionContext;\n popDispatcher(prevDispatcher);\n popCacheDispatcher(prevCacheDispatcher);\n\n if (workInProgress !== null) {\n // This is a sync render, so we should have finished the whole tree.\n throw Error(formatProdErrorMessage(261));\n }\n\n\n workInProgressRoot = null;\n workInProgressRootRenderLanes = NoLanes; // It's safe to process the queue now that the render phase is complete.\n\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n} // The work loop is an extremely hot path. Tell Closure not to inline it.\n\n/** @noinline */\n\n\nfunction workLoopSync() {\n // Perform work without checking if we need to yield between fiber.\n while (workInProgress !== null) {\n performUnitOfWork(workInProgress);\n }\n}\n\nfunction renderRootConcurrent(root, lanes) {\n const prevExecutionContext = executionContext;\n executionContext |= RenderContext;\n const prevDispatcher = pushDispatcher();\n const prevCacheDispatcher = pushCacheDispatcher(); // If the root or lanes have changed, throw out the existing stack\n // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n\n workInProgressTransitions = getTransitionsForLanes();\n resetRenderTimer();\n prepareFreshStack(root, lanes);\n }\n\n outer: do {\n try {\n if (workInProgressSuspendedReason !== NotSuspended && workInProgress !== null) {\n // The work loop is suspended. We need to either unwind the stack or\n // replay the suspended component.\n const unitOfWork = workInProgress;\n const thrownValue = workInProgressThrownValue;\n\n resumeOrUnwind: switch (workInProgressSuspendedReason) {\n case SuspendedOnError:\n {\n // Unwind then continue with the normal work loop.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue);\n break;\n }\n\n case SuspendedOnData:\n {\n const thenable = thrownValue;\n\n if (isThenableResolved(thenable)) {\n // The data resolved. Try rendering the component again.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(unitOfWork);\n break;\n } // The work loop is suspended on data. We should wait for it to\n // resolve before continuing to render.\n // TODO: Handle the case where the promise resolves synchronously.\n // Usually this is handled when we instrument the promise to add a\n // `status` field, but if the promise already has a status, we won't\n // have added a listener until right here.\n\n\n const onResolution = () => {\n // Check if the root is still suspended on this promise.\n if (workInProgressSuspendedReason === SuspendedOnData && workInProgressRoot === root) {\n // Mark the root as ready to continue rendering.\n workInProgressSuspendedReason = SuspendedAndReadyToContinue;\n } // Ensure the root is scheduled. We should do this even if we're\n // currently working on a different root, so that we resume\n // rendering later.\n\n\n ensureRootIsScheduled(root);\n };\n\n thenable.then(onResolution, onResolution);\n break outer;\n }\n\n case SuspendedOnImmediate:\n {\n // If this fiber just suspended, it's possible the data is already\n // cached. Yield to the main thread to give it a chance to ping. If\n // it does, we can retry immediately without unwinding the stack.\n workInProgressSuspendedReason = SuspendedAndReadyToContinue;\n break outer;\n }\n\n case SuspendedOnInstance:\n {\n workInProgressSuspendedReason = SuspendedOnInstanceAndReadyToContinue;\n break outer;\n }\n\n case SuspendedAndReadyToContinue:\n {\n const thenable = thrownValue;\n\n if (isThenableResolved(thenable)) {\n // The data resolved. Try rendering the component again.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(unitOfWork);\n } else {\n // Otherwise, unwind then continue with the normal work loop.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue);\n }\n\n break;\n }\n\n case SuspendedOnInstanceAndReadyToContinue:\n {\n switch (workInProgress.tag) {\n case HostComponent:\n case HostHoistable:\n case HostSingleton:\n {\n // Before unwinding the stack, check one more time if the\n // instance is ready. It may have loaded when React yielded to\n // the main thread.\n // Assigning this to a constant so Flow knows the binding won't\n // be mutated by `preloadInstance`.\n const hostFiber = workInProgress;\n const type = hostFiber.type;\n const props = hostFiber.pendingProps;\n const isReady = preloadInstance(type, props);\n\n if (isReady) {\n // The data resolved. Resume the work loop as if nothing\n // suspended. Unlike when a user component suspends, we don't\n // have to replay anything because the host fiber\n // already completed.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n const sibling = hostFiber.sibling;\n\n if (sibling !== null) {\n workInProgress = sibling;\n } else {\n const returnFiber = hostFiber.return;\n\n if (returnFiber !== null) {\n workInProgress = returnFiber;\n completeUnitOfWork(returnFiber);\n } else {\n workInProgress = null;\n }\n }\n\n break resumeOrUnwind;\n }\n\n break;\n }\n\n default:\n {\n // This will fail gracefully but it's not correct, so log a\n // warning in dev.\n if (false) ;\n\n break;\n }\n } // Otherwise, unwind then continue with the normal work loop.\n\n\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue);\n break;\n }\n\n case SuspendedOnDeprecatedThrowPromise:\n {\n // Suspended by an old implementation that uses the `throw promise`\n // pattern. The newer replaying behavior can cause subtle issues\n // like infinite ping loops. So we maintain the old behavior and\n // always unwind.\n workInProgressSuspendedReason = NotSuspended;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue);\n break;\n }\n\n case SuspendedOnHydration:\n {\n // Selective hydration. An update flowed into a dehydrated tree.\n // Interrupt the current render so the work loop can switch to the\n // hydration lane.\n resetWorkInProgressStack();\n workInProgressRootExitStatus = RootDidNotComplete;\n break outer;\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(462));\n }\n }\n }\n\n if (false && ReactCurrentActQueue.current !== null) ; else {\n workLoopConcurrent();\n }\n\n break;\n } catch (thrownValue) {\n handleThrow(root, thrownValue);\n }\n } while (true);\n\n resetContextDependencies();\n popDispatcher(prevDispatcher);\n popCacheDispatcher(prevCacheDispatcher);\n executionContext = prevExecutionContext;\n\n\n if (workInProgress !== null) {\n\n return RootInProgress;\n } else {\n\n\n workInProgressRoot = null;\n workInProgressRootRenderLanes = NoLanes; // It's safe to process the queue now that the render phase is complete.\n\n finishQueueingConcurrentUpdates(); // Return the final exit status.\n\n return workInProgressRootExitStatus;\n }\n}\n/** @noinline */\n\n\nfunction workLoopConcurrent() {\n // Perform work until Scheduler asks us to yield\n while (workInProgress !== null && !shouldYield()) {\n // $FlowFixMe[incompatible-call] found when upgrading Flow\n performUnitOfWork(workInProgress);\n }\n}\n\nfunction performUnitOfWork(unitOfWork) {\n // The current, flushed, state of this fiber is the alternate. Ideally\n // nothing should rely on this, but relying on it here means that we don't\n // need an additional field on the work in progress.\n const current = unitOfWork.alternate;\n let next;\n\n {\n next = beginWork(current, unitOfWork, entangledRenderLanes);\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n if (next === null) {\n // If this doesn't spawn new work, complete the current work.\n completeUnitOfWork(unitOfWork);\n } else {\n workInProgress = next;\n }\n\n ReactCurrentOwner.current = null;\n}\n\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n // This is a fork of performUnitOfWork specifcally for replaying a fiber that\n // just suspended.\n //\n const current = unitOfWork.alternate;\n let next;\n\n switch (unitOfWork.tag) {\n case IndeterminateComponent:\n {\n // Because it suspended with `use`, we can assume it's a\n // function component.\n unitOfWork.tag = FunctionComponent; // Fallthrough to the next branch.\n }\n\n case SimpleMemoComponent:\n case FunctionComponent:\n {\n // Resolve `defaultProps`. This logic is copied from `beginWork`.\n // TODO: Consider moving this switch statement into that module. Also,\n // could maybe use this as an opportunity to say `use` doesn't work with\n // `defaultProps` :)\n const Component = unitOfWork.type;\n const unresolvedProps = unitOfWork.pendingProps;\n const resolvedProps = unitOfWork.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n let context;\n\n {\n const unmaskedContext = getUnmaskedContext(unitOfWork, Component, true);\n context = getMaskedContext(unitOfWork, unmaskedContext);\n }\n\n next = replayFunctionComponent(current, unitOfWork, resolvedProps, Component, context, workInProgressRootRenderLanes);\n break;\n }\n\n case ForwardRef:\n {\n // Resolve `defaultProps`. This logic is copied from `beginWork`.\n // TODO: Consider moving this switch statement into that module. Also,\n // could maybe use this as an opportunity to say `use` doesn't work with\n // `defaultProps` :)\n const Component = unitOfWork.type.render;\n const unresolvedProps = unitOfWork.pendingProps;\n const resolvedProps = unitOfWork.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n next = replayFunctionComponent(current, unitOfWork, resolvedProps, Component, unitOfWork.ref, workInProgressRootRenderLanes);\n break;\n }\n\n case HostComponent:\n {\n // Some host components are stateful (that's how we implement form\n // actions) but we don't bother to reuse the memoized state because it's\n // not worth the extra code. The main reason to reuse the previous hooks\n // is to reuse uncached promises, but we happen to know that the only\n // promises that a host component might suspend on are definitely cached\n // because they are controlled by us. So don't bother.\n resetHooksOnUnwind(unitOfWork); // Fallthrough to the next branch.\n }\n\n default:\n {\n // Other types besides function components are reset completely before\n // being replayed. Currently this only happens when a Usable type is\n // reconciled — the reconciler will suspend.\n //\n // We reset the fiber back to its original state; however, this isn't\n // a full \"unwind\" because we're going to reuse the promises that were\n // reconciled previously. So it's intentional that we don't call\n // resetSuspendedWorkLoopOnUnwind here.\n unwindInterruptedWork(current, unitOfWork);\n unitOfWork = workInProgress = resetWorkInProgress(unitOfWork, entangledRenderLanes);\n next = beginWork(current, unitOfWork, entangledRenderLanes);\n break;\n }\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n if (next === null) {\n // If this doesn't spawn new work, complete the current work.\n completeUnitOfWork(unitOfWork);\n } else {\n workInProgress = next;\n }\n\n ReactCurrentOwner.current = null;\n}\n\nfunction throwAndUnwindWorkLoop(root, unitOfWork, thrownValue) {\n // This is a fork of performUnitOfWork specifcally for unwinding a fiber\n // that threw an exception.\n //\n // Return to the normal work loop. This will unwind the stack, and potentially\n // result in showing a fallback.\n resetSuspendedWorkLoopOnUnwind(unitOfWork);\n const returnFiber = unitOfWork.return;\n\n try {\n // Find and mark the nearest Suspense or error boundary that can handle\n // this \"exception\".\n const didFatal = throwException(root, returnFiber, unitOfWork, thrownValue, workInProgressRootRenderLanes);\n\n if (didFatal) {\n panicOnRootError(thrownValue);\n return;\n }\n } catch (error) {\n // We had trouble processing the error. An example of this happening is\n // when accessing the `componentDidCatch` property of an error boundary\n // throws an error. A weird edge case. There's a regression test for this.\n // To prevent an infinite loop, bubble the error up to the next parent.\n if (returnFiber !== null) {\n workInProgress = returnFiber;\n throw error;\n } else {\n panicOnRootError(thrownValue);\n return;\n }\n }\n\n if (unitOfWork.flags & Incomplete) {\n // Unwind the stack until we reach the nearest boundary.\n unwindUnitOfWork(unitOfWork);\n } else {\n // Although the fiber suspended, we're intentionally going to commit it in\n // an inconsistent state. We can do this safely in cases where we know the\n // inconsistent tree will be hidden.\n //\n // This currently only applies to Legacy Suspense implementation, but we may\n // port a version of this to concurrent roots, too, when performing a\n // synchronous render. Because that will allow us to mutate the tree as we\n // go instead of buffering mutations until the end. Though it's unclear if\n // this particular path is how that would be implemented.\n completeUnitOfWork(unitOfWork);\n }\n}\n\nfunction panicOnRootError(error) {\n // There's no ancestor that can handle this exception. This should never\n // happen because the root is supposed to capture all errors that weren't\n // caught by an error boundary. This is a fatal error, or panic condition,\n // because we've run out of ways to recover.\n workInProgressRootExitStatus = RootFatalErrored;\n workInProgressRootFatalError = error; // Set `workInProgress` to null. This represents advancing to the next\n // sibling, or the parent if there are no siblings. But since the root\n // has no siblings nor a parent, we set it to null. Usually this is\n // handled by `completeUnitOfWork` or `unwindWork`, but since we're\n // intentionally not calling those, we need set it here.\n // TODO: Consider calling `unwindWork` to pop the contexts.\n\n workInProgress = null;\n}\n\nfunction completeUnitOfWork(unitOfWork) {\n // Attempt to complete the current unit of work, then move to the next\n // sibling. If there are no more siblings, return to the parent fiber.\n let completedWork = unitOfWork;\n\n do {\n // nothing should rely on this, but relying on it here means that we don't\n // need an additional field on the work in progress.\n\n\n const current = completedWork.alternate;\n const returnFiber = completedWork.return;\n let next;\n\n {\n next = completeWork(current, completedWork, entangledRenderLanes);\n }\n\n if (next !== null) {\n // Completing this fiber spawned new work. Work on that next.\n workInProgress = next;\n return;\n }\n\n const siblingFiber = completedWork.sibling;\n\n if (siblingFiber !== null) {\n // If there is more work to do in this returnFiber, do that next.\n workInProgress = siblingFiber;\n return;\n } // Otherwise, return to the parent\n // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n completedWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n workInProgress = completedWork;\n } while (completedWork !== null); // We've reached the root.\n\n\n if (workInProgressRootExitStatus === RootInProgress) {\n workInProgressRootExitStatus = RootCompleted;\n }\n}\n\nfunction unwindUnitOfWork(unitOfWork) {\n let incompleteWork = unitOfWork;\n\n do {\n // The current, flushed, state of this fiber is the alternate. Ideally\n // nothing should rely on this, but relying on it here means that we don't\n // need an additional field on the work in progress.\n const current = incompleteWork.alternate; // This fiber did not complete because something threw. Pop values off\n // the stack without entering the complete phase. If this is a boundary,\n // capture values if possible.\n\n const next = unwindWork(current, incompleteWork); // Because this fiber did not complete, don't reset its lanes.\n\n if (next !== null) {\n // Found a boundary that can handle this exception. Re-renter the\n // begin phase. This branch will return us to the normal work loop.\n //\n // Since we're restarting, remove anything that is not a host effect\n // from the effect tag.\n next.flags &= HostEffectMask;\n workInProgress = next;\n return;\n } // Keep unwinding until we reach either a boundary or the root.\n // of the node being unwound, we should be able to reset node itself as we\n // unwind the stack. Saves an additional null check.\n\n\n const returnFiber = incompleteWork.return;\n\n if (returnFiber !== null) {\n // Mark the parent fiber as incomplete and clear its subtree flags.\n // TODO: Once we stop prerendering siblings, we may be able to get rid of\n // the Incomplete flag because unwinding to the nearest boundary will\n // happen synchronously.\n returnFiber.flags |= Incomplete;\n returnFiber.subtreeFlags = NoFlags$1;\n returnFiber.deletions = null;\n } // NOTE: If we re-enable sibling prerendering in some cases, here we\n // would switch to the normal completion path: check if a sibling\n // exists, and if so, begin work on it.\n // Otherwise, return to the parent\n // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n incompleteWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n workInProgress = incompleteWork;\n } while (incompleteWork !== null); // We've unwound all the way to the root.\n\n\n workInProgressRootExitStatus = RootDidNotComplete;\n workInProgress = null;\n}\n\nfunction commitRoot(root, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, spawnedLane) {\n // TODO: This no longer makes any sense. We already wrap the mutation and\n // layout phases. Should be able to remove.\n const previousUpdateLanePriority = getCurrentUpdatePriority();\n const prevTransition = ReactCurrentBatchConfig$1.transition;\n\n try {\n ReactCurrentBatchConfig$1.transition = null;\n setCurrentUpdatePriority(DiscreteEventPriority);\n commitRootImpl(root, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, previousUpdateLanePriority, spawnedLane);\n } finally {\n ReactCurrentBatchConfig$1.transition = prevTransition;\n setCurrentUpdatePriority(previousUpdateLanePriority);\n }\n\n return null;\n}\n\nfunction commitRootImpl(root, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, renderPriorityLevel, spawnedLane) {\n do {\n // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which\n // means `flushPassiveEffects` will sometimes result in additional\n // passive effects. So we need to keep flushing in a loop until there are\n // no more pending effects.\n // TODO: Might be better if `flushPassiveEffects` did not automatically\n // flush synchronous work at the end, to avoid factoring hazards like this.\n flushPassiveEffects();\n } while (rootWithPendingPassiveEffects !== null);\n\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n throw Error(formatProdErrorMessage(327));\n }\n\n const finishedWork = root.finishedWork;\n const lanes = root.finishedLanes;\n\n if (finishedWork === null) {\n\n return null;\n }\n\n root.finishedWork = null;\n root.finishedLanes = NoLanes;\n\n if (finishedWork === root.current) {\n throw Error(formatProdErrorMessage(177));\n } // commitRoot never returns a continuation; it always finishes synchronously.\n // So we can clear these now to allow a new callback to be scheduled.\n\n\n root.callbackNode = null;\n root.callbackPriority = NoLane;\n root.cancelPendingCommit = null; // Check which lanes no longer have any work scheduled on them, and mark\n // those as finished.\n\n let remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes); // Make sure to account for lanes that were updated by a concurrent event\n // during the render phase; don't mark them as finished.\n\n const concurrentlyUpdatedLanes = getConcurrentlyUpdatedLanes();\n remainingLanes = mergeLanes(remainingLanes, concurrentlyUpdatedLanes);\n markRootFinished(root, remainingLanes, spawnedLane); // Reset this before firing side effects so we can detect recursive updates.\n\n didIncludeCommitPhaseUpdate = false;\n\n if (root === workInProgressRoot) {\n // We can reset these now that they are finished.\n workInProgressRoot = null;\n workInProgress = null;\n workInProgressRootRenderLanes = NoLanes;\n } // If there are pending passive effects, schedule a callback to process them.\n // Do this as early as possible, so it is queued before anything else that\n // might get scheduled in the commit phase. (See #16714.)\n // TODO: Delete all other places that schedule the passive effect callback\n // They're redundant.\n\n\n if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags$1 || (finishedWork.flags & PassiveMask) !== NoFlags$1) {\n if (!rootDoesHavePassiveEffects) {\n rootDoesHavePassiveEffects = true;\n pendingPassiveEffectsRemainingLanes = remainingLanes; // workInProgressTransitions might be overwritten, so we want\n // to store it in pendingPassiveTransitions until they get processed\n // We need to pass this through as an argument to commitRoot\n // because workInProgressTransitions might have changed between\n // the previous render and commit if we throttle the commit\n // with setTimeout\n\n pendingPassiveTransitions = transitions;\n scheduleCallback(NormalPriority$1, () => {\n flushPassiveEffects(); // This render triggered passive effects: release the root cache pool\n // *after* passive effects fire to avoid freeing a cache pool that may\n // be referenced by a node in the tree (HostRoot, Cache boundary etc)\n\n return null;\n });\n }\n } // Check if there are any effects in the whole tree.\n // TODO: This is left over from the effect list implementation, where we had\n // to check for the existence of `firstEffect` to satisfy Flow. I think the\n // only other reason this optimization exists is because it affects profiling.\n // Reconsider whether this is necessary.\n\n\n const subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags$1;\n const rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags$1;\n\n if (subtreeHasEffects || rootHasEffect) {\n const prevTransition = ReactCurrentBatchConfig$1.transition;\n ReactCurrentBatchConfig$1.transition = null;\n const previousPriority = getCurrentUpdatePriority();\n setCurrentUpdatePriority(DiscreteEventPriority);\n const prevExecutionContext = executionContext;\n executionContext |= CommitContext; // Reset this to null before calling lifecycles\n\n ReactCurrentOwner.current = null; // The commit phase is broken into several sub-phases. We do a separate pass\n // of the effect list for each phase: all mutation effects come before all\n // layout effects, and so on.\n // The first phase a \"before mutation\" phase. We use this phase to read the\n // state of the host tree right before we mutate it. This is where\n // getSnapshotBeforeUpdate is called.\n\n commitBeforeMutationEffects(root, finishedWork);\n\n\n commitMutationEffects(root, finishedWork);\n\n resetAfterCommit(); // The work-in-progress tree is now the current tree. This must come after\n // the mutation phase, so that the previous tree is still current during\n // componentWillUnmount, but before the layout phase, so that the finished\n // work is current during componentDidMount/Update.\n\n root.current = finishedWork; // The next phase is the layout phase, where we call effects that read\n\n commitLayoutEffects(finishedWork, root);\n // opportunity to paint.\n\n\n requestPaint();\n executionContext = prevExecutionContext; // Reset the priority to the previous non-sync value.\n\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig$1.transition = prevTransition;\n } else {\n // No effects.\n root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were\n }\n\n if (rootDoesHavePassiveEffects) {\n // This commit has passive effects. Stash a reference to them. But don't\n // schedule a callback until after flushing layout work.\n rootDoesHavePassiveEffects = false;\n rootWithPendingPassiveEffects = root;\n pendingPassiveEffectsLanes = lanes;\n } else {\n // There were no passive effects, so we can immediately release the cache\n // pool for this render.\n releaseRootPooledCache(root, remainingLanes);\n } // Read this again, since an effect might have updated it\n\n\n remainingLanes = root.pendingLanes; // Check if there's remaining work on this root\n // TODO: This is part of the `componentDidCatch` implementation. Its purpose\n // is to detect whether something might have called setState inside\n // `componentDidCatch`. The mechanism is known to be flawed because `setState`\n // inside `componentDidCatch` is itself flawed — that's why we recommend\n // `getDerivedStateFromError` instead. However, it could be improved by\n // checking if remainingLanes includes Sync work, instead of whether there's\n // any work remaining at all (which would also include stuff like Suspense\n // retries or transitions). It's been like this for a while, though, so fixing\n // it probably isn't that urgent.\n\n if (remainingLanes === NoLanes) {\n // If there's no remaining work, we can clear the set of already failed\n // error boundaries.\n legacyErrorBoundariesThatAlreadyFailed = null;\n }\n\n onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n // additional work on this root is scheduled.\n\n\n ensureRootIsScheduled(root);\n\n if (recoverableErrors !== null) {\n // There were errors during this render, but recovered from them without\n // needing to surface it to the UI. We log them here.\n const onRecoverableError = root.onRecoverableError;\n\n for (let i = 0; i < recoverableErrors.length; i++) {\n const recoverableError = recoverableErrors[i];\n const errorInfo = makeErrorInfo(recoverableError.digest, recoverableError.stack);\n onRecoverableError(recoverableError.value, errorInfo);\n }\n }\n\n if (hasUncaughtError) {\n hasUncaughtError = false;\n const error = firstUncaughtError;\n firstUncaughtError = null;\n throw error;\n } // If the passive effects are the result of a discrete render, flush them\n // synchronously at the end of the current task so that the result is\n // immediately observable. Otherwise, we assume that they are not\n // order-dependent and do not need to be observed by external systems, so we\n // can wait until after paint.\n // TODO: We can optimize this by not scheduling the callback earlier. Since we\n // currently schedule the callback in multiple places, will wait until those\n // are consolidated.\n\n\n if (includesSyncLane(pendingPassiveEffectsLanes) && root.tag !== LegacyRoot) {\n flushPassiveEffects();\n } // Read this again, since a passive effect might have updated it\n\n\n remainingLanes = root.pendingLanes; // Check if this render scheduled a cascading synchronous update. This is a\n // heurstic to detect infinite update loops. We are intentionally excluding\n // hydration lanes in this check, because render triggered by selective\n // hydration is conceptually not an update.\n\n if ( // Check if there was a recursive update spawned by this render, in either\n // the render phase or the commit phase. We track these explicitly because\n // we can't infer from the remaining lanes alone.\n (didIncludeRenderPhaseUpdate || didIncludeCommitPhaseUpdate) || // Was the finished render the result of an update (not hydration)?\n includesSomeLane(lanes, UpdateLanes) && // Did it schedule a sync update?\n includesSomeLane(remainingLanes, SyncUpdateLanes)) {\n // finishing. If there are too many, it indicates an infinite update loop.\n\n\n if (root === rootWithNestedUpdates) {\n nestedUpdateCount++;\n } else {\n nestedUpdateCount = 0;\n rootWithNestedUpdates = root;\n }\n } else {\n nestedUpdateCount = 0;\n } // If layout work was scheduled, flush it now.\n\n\n flushSyncWorkOnAllRoots();\n\n return null;\n}\n\nfunction makeErrorInfo(digest, componentStack) {\n {\n return {\n digest,\n componentStack\n };\n }\n}\n\nfunction releaseRootPooledCache(root, remainingLanes) {\n {\n const pooledCacheLanes = root.pooledCacheLanes &= remainingLanes;\n\n if (pooledCacheLanes === NoLanes) {\n // None of the remaining work relies on the cache pool. Clear it so\n // subsequent requests get a new cache\n const pooledCache = root.pooledCache;\n\n if (pooledCache != null) {\n root.pooledCache = null;\n releaseCache(pooledCache);\n }\n }\n }\n}\n\nfunction flushPassiveEffects() {\n // Returns whether passive effects were flushed.\n // TODO: Combine this check with the one in flushPassiveEFfectsImpl. We should\n // probably just combine the two functions. I believe they were only separate\n // in the first place because we used to wrap it with\n // `Scheduler.runWithPriority`, which accepts a function. But now we track the\n // priority within React itself, so we can mutate the variable directly.\n if (rootWithPendingPassiveEffects !== null) {\n // Cache the root since rootWithPendingPassiveEffects is cleared in\n // flushPassiveEffectsImpl\n const root = rootWithPendingPassiveEffects; // Cache and clear the remaining lanes flag; it must be reset since this\n // method can be called from various places, not always from commitRoot\n // where the remaining lanes are known\n\n const remainingLanes = pendingPassiveEffectsRemainingLanes;\n pendingPassiveEffectsRemainingLanes = NoLanes;\n const renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n const priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n const prevTransition = ReactCurrentBatchConfig$1.transition;\n const previousPriority = getCurrentUpdatePriority();\n\n try {\n ReactCurrentBatchConfig$1.transition = null;\n setCurrentUpdatePriority(priority);\n return flushPassiveEffectsImpl();\n } finally {\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig$1.transition = prevTransition; // Once passive effects have run for the tree - giving components a\n // chance to retain cache instances they use - release the pooled\n // cache at the root (if there is one)\n\n releaseRootPooledCache(root, remainingLanes);\n }\n }\n\n return false;\n}\n\nfunction flushPassiveEffectsImpl() {\n if (rootWithPendingPassiveEffects === null) {\n return false;\n } // Cache and clear the transitions flag\n\n\n const transitions = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n const root = rootWithPendingPassiveEffects;\n const lanes = pendingPassiveEffectsLanes;\n rootWithPendingPassiveEffects = null; // TODO: This is sometimes out of sync with rootWithPendingPassiveEffects.\n // Figure out why and fix it. It's not causing any known issues (probably\n // because it's only used for profiling), but it's a refactor hazard.\n\n pendingPassiveEffectsLanes = NoLanes;\n\n if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n throw Error(formatProdErrorMessage(331));\n }\n\n const prevExecutionContext = executionContext;\n executionContext |= CommitContext;\n commitPassiveUnmountEffects(root.current);\n commitPassiveMountEffects(root, root.current, lanes, transitions); // TODO: Move to commitPassiveMountEffects\n\n executionContext = prevExecutionContext;\n flushSyncWorkOnAllRoots();\n\n\n onPostCommitRoot(root);\n\n return true;\n}\n\nfunction isAlreadyFailedLegacyErrorBoundary(instance) {\n return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n}\nfunction markLegacyErrorBoundaryAsFailed(instance) {\n if (legacyErrorBoundariesThatAlreadyFailed === null) {\n legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n } else {\n legacyErrorBoundariesThatAlreadyFailed.add(instance);\n }\n}\n\nfunction prepareToThrowUncaughtError(error) {\n if (!hasUncaughtError) {\n hasUncaughtError = true;\n firstUncaughtError = error;\n }\n}\n\nconst onUncaughtError = prepareToThrowUncaughtError;\n\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n const errorInfo = createCapturedValueAtFiber(error, sourceFiber);\n const update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n const root = enqueueUpdate(rootFiber, update, SyncLane);\n\n if (root !== null) {\n markRootUpdated(root, SyncLane);\n ensureRootIsScheduled(root);\n }\n}\n\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n\n if (sourceFiber.tag === HostRoot) {\n // Error was thrown at the root. There is no parent, so the root\n // itself should capture it.\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n return;\n }\n\n let fiber = nearestMountedAncestor;\n\n while (fiber !== null) {\n if (fiber.tag === HostRoot) {\n captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);\n return;\n } else if (fiber.tag === ClassComponent) {\n const ctor = fiber.type;\n const instance = fiber.stateNode;\n\n if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n const errorInfo = createCapturedValueAtFiber(error, sourceFiber);\n const update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n const root = enqueueUpdate(fiber, update, SyncLane);\n\n if (root !== null) {\n markRootUpdated(root, SyncLane);\n ensureRootIsScheduled(root);\n }\n\n return;\n }\n }\n\n fiber = fiber.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n // Attach a ping listener\n //\n // The data might resolve before we have a chance to commit the fallback. Or,\n // in the case of a refresh, we'll never commit a fallback. So we need to\n // attach a listener now. When it resolves (\"pings\"), we can decide whether to\n // try rendering the tree again.\n //\n // Only attach a listener if one does not already exist for the lanes\n // we're currently rendering (which acts like a \"thread ID\" here).\n //\n // We only need to do this in concurrent mode. Legacy Suspense always\n // commits fallbacks synchronously, so there are no pings.\n let pingCache = root.pingCache;\n let threadIDs;\n\n if (pingCache === null) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else {\n threadIDs = pingCache.get(wakeable);\n\n if (threadIDs === undefined) {\n threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n }\n }\n\n if (!threadIDs.has(lanes)) {\n workInProgressRootDidAttachPingListener = true; // Memoize using the thread ID to prevent redundant listeners.\n\n threadIDs.add(lanes);\n const ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n\n wakeable.then(ping, ping);\n }\n}\n\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n const pingCache = root.pingCache;\n\n if (pingCache !== null) {\n // The wakeable resolved, so we no longer need to memoize, because it will\n // never be thrown again.\n pingCache.delete(wakeable);\n }\n\n markRootPinged(root, pingedLanes);\n\n if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n // Received a ping at the same priority level at which we're currently\n // rendering. We might want to restart this render. This should mirror\n // the logic of whether or not a root suspends once it completes.\n // TODO: If we're rendering sync either due to Sync, Batched or expired,\n // we should probably never restart.\n // If we're suspended with delay, or if it's a retry, we'll always suspend\n // so we can always restart.\n if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n // Force a restart from the root by unwinding the stack. Unless this is\n // being called from the render phase, because that would cause a crash.\n if ((executionContext & RenderContext) === NoContext) {\n prepareFreshStack(root, NoLanes);\n }\n } else {\n // Even though we can't restart right now, we might get an\n // opportunity later. So we mark this render as having a ping.\n workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n }\n }\n\n ensureRootIsScheduled(root);\n}\n\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n // The boundary fiber (a Suspense component or SuspenseList component)\n // previously was rendered in its fallback state. One of the promises that\n // suspended it has resolved, which means at least part of the tree was\n // likely unblocked. Try rendering again, at a new lanes.\n if (retryLane === NoLane) {\n // TODO: Assign this to `suspenseState.retryLane`? to avoid\n // unnecessary entanglement?\n retryLane = requestRetryLane(boundaryFiber);\n } // TODO: Special case idle priority?\n\n\n const root = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n\n if (root !== null) {\n markRootUpdated(root, retryLane);\n ensureRootIsScheduled(root);\n }\n}\n\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n const suspenseState = boundaryFiber.memoizedState;\n let retryLane = NoLane;\n\n if (suspenseState !== null) {\n retryLane = suspenseState.retryLane;\n }\n\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n let retryLane = NoLane; // Default\n\n let retryCache;\n\n switch (boundaryFiber.tag) {\n case SuspenseComponent:\n retryCache = boundaryFiber.stateNode;\n const suspenseState = boundaryFiber.memoizedState;\n\n if (suspenseState !== null) {\n retryLane = suspenseState.retryLane;\n }\n\n break;\n\n case SuspenseListComponent:\n retryCache = boundaryFiber.stateNode;\n break;\n\n case OffscreenComponent:\n {\n const instance = boundaryFiber.stateNode;\n retryCache = instance._retryCache;\n break;\n }\n\n default:\n throw Error(formatProdErrorMessage(314));\n }\n\n if (retryCache !== null) {\n // The wakeable resolved, so we no longer need to memoize, because it will\n // never be thrown again.\n retryCache.delete(wakeable);\n }\n\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction throwIfInfiniteUpdateLoopDetected() {\n if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n nestedUpdateCount = 0;\n rootWithNestedUpdates = null;\n\n {\n if (executionContext & RenderContext && workInProgressRoot !== null) {\n // We're in the render phase. Disable the concurrent error recovery\n // mechanism to ensure that the error we're about to throw gets handled.\n // We need it to trigger the nearest error boundary so that the infinite\n // update loop is broken.\n workInProgressRoot.errorRecoveryDisabledLanes = mergeLanes(workInProgressRoot.errorRecoveryDisabledLanes, workInProgressRootRenderLanes);\n }\n }\n\n throw Error(formatProdErrorMessage(185));\n }\n}\nlet beginWork;\n\n{\n beginWork = beginWork$1;\n}\n\nfunction scheduleCallback(priorityLevel, callback) {\n {\n // In production, always call Scheduler. This function will be stripped out.\n return scheduleCallback$3(priorityLevel, callback);\n }\n}\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n // Instance\n this.tag = tag;\n this.key = key;\n this.elementType = null;\n this.type = null;\n this.stateNode = null; // Fiber\n\n this.return = null;\n this.child = null;\n this.sibling = null;\n this.index = 0;\n this.ref = null;\n this.refCleanup = null;\n this.pendingProps = pendingProps;\n this.memoizedProps = null;\n this.updateQueue = null;\n this.memoizedState = null;\n this.dependencies = null;\n this.mode = mode; // Effects\n\n this.flags = NoFlags$1;\n this.subtreeFlags = NoFlags$1;\n this.deletions = null;\n this.lanes = NoLanes;\n this.childLanes = NoLanes;\n this.alternate = null;\n} // This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n// more difficult to predict when they get optimized and they are almost\n// never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n// always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n// to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n// is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n// compatible.\n\n\nfunction createFiber(tag, pendingProps, key, mode) {\n // $FlowFixMe[invalid-constructor]: the shapes are exact here but Flow doesn't like constructors\n return new FiberNode(tag, pendingProps, key, mode);\n}\n\nfunction shouldConstruct(Component) {\n const prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction isSimpleFunctionComponent(type) {\n return typeof type === 'function' && !shouldConstruct(type) && type.defaultProps === undefined;\n}\nfunction resolveLazyComponentTag(Component) {\n if (typeof Component === 'function') {\n return shouldConstruct(Component) ? ClassComponent : FunctionComponent;\n } else if (Component !== undefined && Component !== null) {\n const $$typeof = Component.$$typeof;\n\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n return ForwardRef;\n }\n\n if ($$typeof === REACT_MEMO_TYPE) {\n return MemoComponent;\n }\n }\n\n return IndeterminateComponent;\n} // This is used to create an alternate fiber to do work on.\n\nfunction createWorkInProgress(current, pendingProps) {\n let workInProgress = current.alternate;\n\n if (workInProgress === null) {\n // We use a double buffering pooling technique because we know that we'll\n // only ever need at most two versions of a tree. We pool the \"other\" unused\n // node that we're free to reuse. This is lazily created to avoid allocating\n // extra objects for things that are never updated. It also allow us to\n // reclaim the extra memory if needed.\n workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n workInProgress.elementType = current.elementType;\n workInProgress.type = current.type;\n workInProgress.stateNode = current.stateNode;\n\n workInProgress.alternate = current;\n current.alternate = workInProgress;\n } else {\n workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.\n\n workInProgress.type = current.type; // We already have an alternate.\n // Reset the effect tag.\n\n workInProgress.flags = NoFlags$1; // The effects are no longer valid.\n\n workInProgress.subtreeFlags = NoFlags$1;\n workInProgress.deletions = null;\n } // Reset all effects except static ones.\n // Static effects are not specific to a render.\n\n\n workInProgress.flags = current.flags & StaticMask;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so\n // it cannot be shared with the current fiber.\n\n const currentDependencies = current.dependencies;\n workInProgress.dependencies = currentDependencies === null ? null : {\n lanes: currentDependencies.lanes,\n firstContext: currentDependencies.firstContext\n }; // These will be overridden during the parent's reconciliation\n\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n\n return workInProgress;\n} // Used to reuse a Fiber for a second pass.\n\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n // This resets the Fiber to what createFiber or createWorkInProgress would\n // have set the values to before during the first pass. Ideally this wouldn't\n // be necessary but unfortunately many code paths reads from the workInProgress\n // when they should be reading from current and writing to workInProgress.\n // We assume pendingProps, index, key, ref, return are still untouched to\n // avoid doing another reconciliation.\n // Reset the effect flags but keep any Placement tags, since that's something\n // that child fiber is setting, not the reconciliation.\n workInProgress.flags &= StaticMask | Placement; // The effects are no longer valid.\n\n const current = workInProgress.alternate;\n\n if (current === null) {\n // Reset to createFiber's initial values.\n workInProgress.childLanes = NoLanes;\n workInProgress.lanes = renderLanes;\n workInProgress.child = null;\n workInProgress.subtreeFlags = NoFlags$1;\n workInProgress.memoizedProps = null;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.dependencies = null;\n workInProgress.stateNode = null;\n } else {\n // Reset to the cloned values that createWorkInProgress would've.\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.subtreeFlags = NoFlags$1;\n workInProgress.deletions = null;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.\n\n workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so\n // it cannot be shared with the current fiber.\n\n const currentDependencies = current.dependencies;\n workInProgress.dependencies = currentDependencies === null ? null : {\n lanes: currentDependencies.lanes,\n firstContext: currentDependencies.firstContext\n };\n }\n\n return workInProgress;\n}\nfunction createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n let mode;\n\n if (tag === ConcurrentRoot) {\n mode = ConcurrentMode;\n\n if (isStrictMode === true) {\n mode |= StrictLegacyMode | StrictEffectsMode;\n }\n } else {\n mode = NoMode;\n }\n\n return createFiber(HostRoot, null, null, mode);\n}\nfunction createFiberFromTypeAndProps(type, // React$ElementType\nkey, pendingProps, owner, mode, lanes) {\n let fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.\n\n let resolvedType = type;\n\n if (typeof type === 'function') {\n if (shouldConstruct(type)) {\n fiberTag = ClassComponent;\n }\n } else if (typeof type === 'string') {\n {\n const hostContext = getHostContext();\n fiberTag = isHostHoistableType(type, pendingProps, hostContext) ? HostHoistable : isHostSingletonType(type) ? HostSingleton : HostComponent;\n }\n } else {\n getTag: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n\n case REACT_STRICT_MODE_TYPE:\n fiberTag = Mode;\n mode |= StrictLegacyMode;\n\n if ((mode & ConcurrentMode) !== NoMode) {\n // Strict effects should never run on legacy roots\n mode |= StrictEffectsMode;\n }\n\n break;\n\n case REACT_PROFILER_TYPE:\n return createFiberFromProfiler(pendingProps, mode, lanes, key);\n\n case REACT_SUSPENSE_TYPE:\n return createFiberFromSuspense(pendingProps, mode, lanes, key);\n\n case REACT_SUSPENSE_LIST_TYPE:\n return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n\n case REACT_OFFSCREEN_TYPE:\n return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n\n case REACT_LEGACY_HIDDEN_TYPE:\n\n // Fall through\n\n case REACT_SCOPE_TYPE:\n\n // Fall through\n\n case REACT_CACHE_TYPE:\n {\n return createFiberFromCache(pendingProps, mode, lanes, key);\n }\n\n // Fall through\n\n case REACT_TRACING_MARKER_TYPE:\n\n // Fall through\n\n case REACT_DEBUG_TRACING_MODE_TYPE:\n\n // Fall through\n\n default:\n {\n if (typeof type === 'object' && type !== null) {\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n {\n fiberTag = ContextProvider;\n break getTag;\n }\n\n // Fall through\n\n case REACT_CONTEXT_TYPE:\n {\n fiberTag = ContextConsumer;\n break getTag;\n }\n\n case REACT_CONSUMER_TYPE:\n\n // Fall through\n\n case REACT_FORWARD_REF_TYPE:\n fiberTag = ForwardRef;\n\n break getTag;\n\n case REACT_MEMO_TYPE:\n fiberTag = MemoComponent;\n break getTag;\n\n case REACT_LAZY_TYPE:\n fiberTag = LazyComponent;\n resolvedType = null;\n break getTag;\n }\n }\n\n let info = '';\n\n throw Error(formatProdErrorMessage(130, type == null ? type : typeof type, info));\n }\n }\n }\n\n const fiber = createFiber(fiberTag, pendingProps, key, mode);\n fiber.elementType = type;\n fiber.type = resolvedType;\n fiber.lanes = lanes;\n\n return fiber;\n}\nfunction createFiberFromElement(element, mode, lanes) {\n let owner = null;\n\n const type = element.type;\n const key = element.key;\n const pendingProps = element.props;\n const fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n\n return fiber;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n const fiber = createFiber(Fragment, elements, key, mode);\n fiber.lanes = lanes;\n return fiber;\n}\n\nfunction createFiberFromProfiler(pendingProps, mode, lanes, key) {\n\n const fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n fiber.elementType = REACT_PROFILER_TYPE;\n fiber.lanes = lanes;\n\n return fiber;\n}\n\nfunction createFiberFromSuspense(pendingProps, mode, lanes, key) {\n const fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n fiber.elementType = REACT_SUSPENSE_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n const fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n const fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n fiber.elementType = REACT_OFFSCREEN_TYPE;\n fiber.lanes = lanes;\n const primaryChildInstance = {\n _visibility: OffscreenVisible,\n _pendingVisibility: OffscreenVisible,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null,\n _current: null,\n detach: () => detachOffscreenInstance(primaryChildInstance),\n attach: () => attachOffscreenInstance(primaryChildInstance)\n };\n fiber.stateNode = primaryChildInstance;\n return fiber;\n}\nfunction createFiberFromCache(pendingProps, mode, lanes, key) {\n const fiber = createFiber(CacheComponent, pendingProps, key, mode);\n fiber.elementType = REACT_CACHE_TYPE;\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromText(content, mode, lanes) {\n const fiber = createFiber(HostText, content, null, mode);\n fiber.lanes = lanes;\n return fiber;\n}\nfunction createFiberFromHostInstanceForDeletion() {\n const fiber = createFiber(HostComponent, null, null, NoMode);\n fiber.elementType = 'DELETED';\n return fiber;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n const fiber = createFiber(DehydratedFragment, null, null, NoMode);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n const pendingProps = portal.children !== null ? portal.children : [];\n const fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n fiber.lanes = lanes;\n fiber.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n // Used by persistent updates\n implementation: portal.implementation\n };\n return fiber;\n} // Used for stashing WIP properties to replay failed work in DEV.\n\nfunction FiberRootNode(containerInfo, // $FlowFixMe[missing-local-annot]\ntag, hydrate, identifierPrefix, onRecoverableError, formState) {\n this.tag = tag;\n this.containerInfo = containerInfo;\n this.pendingChildren = null;\n this.current = null;\n this.pingCache = null;\n this.finishedWork = null;\n this.timeoutHandle = noTimeout;\n this.cancelPendingCommit = null;\n this.context = null;\n this.pendingContext = null;\n this.next = null;\n this.callbackNode = null;\n this.callbackPriority = NoLane;\n this.expirationTimes = createLaneMap(NoTimestamp);\n this.pendingLanes = NoLanes;\n this.suspendedLanes = NoLanes;\n this.pingedLanes = NoLanes;\n this.expiredLanes = NoLanes;\n this.finishedLanes = NoLanes;\n this.errorRecoveryDisabledLanes = NoLanes;\n this.shellSuspendCounter = 0;\n this.entangledLanes = NoLanes;\n this.entanglements = createLaneMap(NoLanes);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onRecoverableError = onRecoverableError;\n\n {\n this.pooledCache = null;\n this.pooledCacheLanes = NoLanes;\n }\n\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\n\nfunction createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, // TODO: We have several of these arguments that are conceptually part of the\n// host config, but because they are passed in at runtime, we have to thread\n// them through the root constructor. Perhaps we should put them all into a\n// single type, like a DynamicHostConfig that is defined by the renderer.\nidentifierPrefix, onRecoverableError, transitionCallbacks, formState) {\n // $FlowFixMe[invalid-constructor] Flow no longer supports calling new on functions\n const root = new FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError, formState);\n // stateNode is any.\n\n\n const uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n root.current = uninitializedFiber;\n uninitializedFiber.stateNode = root;\n\n {\n const initialCache = createCache();\n retainCache(initialCache); // The pooledCache is a fresh cache instance that is used temporarily\n // for newly mounted boundaries during a render. In general, the\n // pooledCache is always cleared from the root at the end of a render:\n // it is either released when render commits, or moved to an Offscreen\n // component if rendering suspends. Because the lifetime of the pooled\n // cache is distinct from the main memoizedState.cache, it must be\n // retained separately.\n\n root.pooledCache = initialCache;\n retainCache(initialCache);\n const initialState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: initialCache\n };\n uninitializedFiber.memoizedState = initialState;\n }\n\n initializeUpdateQueue(uninitializedFiber);\n return root;\n}\n\nvar ReactVersion = '18.3.0-canary-a9cc32511-20240215';\n\nfunction createPortal$1(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n let key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n return {\n // This tag allow us to uniquely identify this as a React Portal\n $$typeof: REACT_PORTAL_TYPE,\n key: key == null ? null : '' + key,\n children,\n containerInfo,\n implementation\n };\n}\n\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) {\n return emptyContextObject;\n }\n\n const fiber = get(parentComponent);\n const parentContext = findCurrentUnmaskedContext(fiber);\n\n if (fiber.tag === ClassComponent) {\n const Component = fiber.type;\n\n if (isContextProvider(Component)) {\n return processChildContext(fiber, Component, parentContext);\n }\n }\n\n return parentContext;\n}\n\nfunction findHostInstance(component) {\n const fiber = get(component);\n\n if (fiber === undefined) {\n if (typeof component.render === 'function') {\n throw Error(formatProdErrorMessage(188));\n } else {\n const keys = Object.keys(component).join(',');\n throw Error(formatProdErrorMessage(268, keys));\n }\n }\n\n const hostFiber = findCurrentHostFiber(fiber);\n\n if (hostFiber === null) {\n return null;\n }\n\n return getPublicInstance(hostFiber.stateNode);\n}\n\nfunction createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n const hydrate = false;\n const initialChildren = null;\n return createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks, null);\n}\nfunction createHydrationContainer(initialChildren, // TODO: Remove `callback` when we delete legacy mode.\ncallback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks, formState) {\n const hydrate = true;\n const root = createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks, formState); // TODO: Move this to FiberRoot constructor\n\n root.context = getContextForSubtree(null); // Schedule the initial render. In a hydration root, this is different from\n // a regular update because the initial render must match was was rendered\n // on the server.\n // NOTE: This update intentionally doesn't have a payload. We're only using\n // the update to schedule work on the root fiber (and, for legacy roots, to\n // enqueue the callback if one is provided).\n\n const current = root.current;\n const lane = requestUpdateLane(current);\n const update = createUpdate(lane);\n update.callback = callback !== undefined && callback !== null ? callback : null;\n enqueueUpdate(current, update, lane);\n scheduleInitialHydrationOnRoot(root, lane);\n return root;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n\n const current = container.current;\n const lane = requestUpdateLane(current);\n\n const context = getContextForSubtree(parentComponent);\n\n if (container.context === null) {\n container.context = context;\n } else {\n container.pendingContext = context;\n }\n\n const update = createUpdate(lane); // Caution: React DevTools currently depends on this property\n // being called \"element\".\n\n update.payload = {\n element\n };\n callback = callback === undefined ? null : callback;\n\n if (callback !== null) {\n\n update.callback = callback;\n }\n\n const root = enqueueUpdate(current, update, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, current, lane);\n entangleTransitions(root, current, lane);\n }\n\n return lane;\n}\nfunction getPublicRootInstance(container) {\n const containerFiber = container.current;\n\n if (!containerFiber.child) {\n return null;\n }\n\n switch (containerFiber.child.tag) {\n case HostSingleton:\n case HostComponent:\n return getPublicInstance(containerFiber.child.stateNode);\n\n default:\n return containerFiber.child.stateNode;\n }\n}\nfunction attemptSynchronousHydration(fiber) {\n switch (fiber.tag) {\n case HostRoot:\n {\n const root = fiber.stateNode;\n\n if (isRootDehydrated(root)) {\n // Flush the first scheduled \"update\".\n const lanes = getHighestPriorityPendingLanes(root);\n flushRoot(root, lanes);\n }\n\n break;\n }\n\n case SuspenseComponent:\n {\n flushSync$1(() => {\n const root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, SyncLane);\n }\n }); // If we're still blocked after this, we need to increase\n // the priority of any promises resolving within this\n // boundary so that they next attempt also has higher pri.\n\n const retryLane = SyncLane;\n markRetryLaneIfNotHydrated(fiber, retryLane);\n break;\n }\n }\n}\n\nfunction markRetryLaneImpl(fiber, retryLane) {\n const suspenseState = fiber.memoizedState;\n\n if (suspenseState !== null && suspenseState.dehydrated !== null) {\n suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n }\n} // Increases the priority of thenables when they resolve within this boundary.\n\n\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n const alternate = fiber.alternate;\n\n if (alternate) {\n markRetryLaneImpl(alternate, retryLane);\n }\n}\n\nfunction attemptContinuousHydration(fiber) {\n if (fiber.tag !== SuspenseComponent) {\n // We ignore HostRoots here because we can't increase\n // their priority and they should not suspend on I/O,\n // since you have to wrap anything that might suspend in\n // Suspense.\n return;\n }\n\n const lane = SelectiveHydrationLane;\n const root = enqueueConcurrentRenderForLane(fiber, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n }\n\n markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (fiber.tag !== SuspenseComponent) {\n // We ignore HostRoots here because we can't increase\n // their priority other than synchronously flush it.\n return;\n }\n\n const lane = requestUpdateLane(fiber);\n const root = enqueueConcurrentRenderForLane(fiber, lane);\n\n if (root !== null) {\n scheduleUpdateOnFiber(root, fiber, lane);\n }\n\n markRetryLaneIfNotHydrated(fiber, lane);\n}\nlet overrideHookState = null;\nlet overrideHookStateDeletePath = null;\nlet overrideHookStateRenamePath = null;\nlet overrideProps = null;\nlet overridePropsDeletePath = null;\nlet overridePropsRenamePath = null;\nlet scheduleUpdate = null;\nlet setErrorHandler = null;\nlet setSuspenseHandler = null;\n\nfunction findHostInstanceByFiber(fiber) {\n const hostFiber = findCurrentHostFiber(fiber);\n\n if (hostFiber === null) {\n return null;\n }\n\n return hostFiber.stateNode;\n}\n\nfunction emptyFindFiberByHostInstance(instance) {\n return null;\n}\n\nfunction injectIntoDevTools(devToolsConfig) {\n const findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n const ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n return injectInternals({\n bundleType: devToolsConfig.bundleType,\n version: devToolsConfig.version,\n rendererPackageName: devToolsConfig.rendererPackageName,\n rendererConfig: devToolsConfig.rendererConfig,\n overrideHookState,\n overrideHookStateDeletePath,\n overrideHookStateRenamePath,\n overrideProps,\n overridePropsDeletePath,\n overridePropsRenamePath,\n setErrorHandler,\n setSuspenseHandler,\n scheduleUpdate,\n currentDispatcherRef: ReactCurrentDispatcher,\n findHostInstanceByFiber,\n findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n // React Refresh\n findHostInstancesForRefresh: null,\n scheduleRefresh: null,\n scheduleRoot: null,\n setRefreshHandler: null,\n // Enables DevTools to append owner stacks to error messages in DEV mode.\n getCurrentFiber: null,\n // Enables DevTools to detect reconciler version rather than renderer version\n // which may not match for third party renderers.\n reconcilerVersion: ReactVersion\n });\n}\n\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n\nlet isInsideEventHandler = false;\n\nfunction finishEventHandler() {\n // Here we wait until all updates have propagated, which is important\n // when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n // Then we restore state of any controlled component.\n const controlledComponentsHavePendingUpdates = needsStateRestore();\n\n if (controlledComponentsHavePendingUpdates) {\n // If a controlled event was fired, we may need to restore the state of\n // the DOM node back to the controlled value. This is necessary when React\n // bails out of the update without touching the DOM.\n // TODO: Restore state in the microtask, after the discrete updates flush,\n // instead of early flushing them here.\n flushSync$1();\n restoreStateIfNeeded();\n }\n}\n\nfunction batchedUpdates(fn, a, b) {\n if (isInsideEventHandler) {\n // If we are currently inside another batch, we need to wait until it\n // fully completes before restoring state.\n return fn(a, b);\n }\n\n isInsideEventHandler = true;\n\n try {\n return batchedUpdates$1(fn, a, b);\n } finally {\n isInsideEventHandler = false;\n finishEventHandler();\n }\n} // TODO: Replace with flushSync\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n case 'onMouseEnter':\n return !!(props.disabled && isInteractive(type));\n\n default:\n return false;\n }\n}\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n\n\nfunction getListener(inst, registrationName) {\n const stateNode = inst.stateNode;\n\n if (stateNode === null) {\n // Work in progress (ex: onload events in incremental mode).\n return null;\n }\n\n const props = getFiberCurrentPropsFromNode(stateNode);\n\n if (props === null) {\n // Work in progress.\n return null;\n }\n\n const listener = props[registrationName];\n\n if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n return null;\n }\n\n if (listener && typeof listener !== 'function') {\n throw Error(formatProdErrorMessage(231, registrationName, typeof listener));\n }\n\n return listener;\n}\n\nlet passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\nif (canUseDOM) {\n try {\n const options = {};\n Object.defineProperty(options, 'passive', {\n get: function () {\n passiveBrowserEventsSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n } catch (e) {\n passiveBrowserEventsSupported = false;\n }\n}\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n let charCode;\n const keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n // report Enter as charCode 10 when ctrl is pressed.\n\n\n if (charCode === 10) {\n charCode = 13;\n } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n\n\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nfunction functionThatReturnsTrue() {\n return true;\n}\n\nfunction functionThatReturnsFalse() {\n return false;\n} // This is intentionally a factory so that we have different returned constructors.\n// If we had a single constructor, it would be megamorphic and engines would deopt.\n\n\nfunction createSyntheticEvent(Interface) {\n /**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n */\n // $FlowFixMe[missing-this-annot]\n function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n\n for (const propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n\n const normalize = Interface[propName];\n\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n\n const defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n if (defaultPrevented) {\n this.isDefaultPrevented = functionThatReturnsTrue;\n } else {\n this.isDefaultPrevented = functionThatReturnsFalse;\n }\n\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n } // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\n assign(SyntheticBaseEvent.prototype, {\n // $FlowFixMe[missing-this-annot]\n preventDefault: function () {\n this.defaultPrevented = true;\n const event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault(); // $FlowFixMe[illegal-typeof] - flow is not aware of `unknown` in IE\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n\n this.isDefaultPrevented = functionThatReturnsTrue;\n },\n // $FlowFixMe[missing-this-annot]\n stopPropagation: function () {\n const event = this.nativeEvent;\n\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation(); // $FlowFixMe[illegal-typeof] - flow is not aware of `unknown` in IE\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = functionThatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {// Modern event system doesn't use pooling.\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nconst EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n};\nconst SyntheticEvent = createSyntheticEvent(EventInterface);\n\nconst UIEventInterface = assign({}, EventInterface, {\n view: 0,\n detail: 0\n});\n\nconst SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\nlet lastMovementX;\nlet lastMovementY;\nlet lastMouseEvent;\n\nfunction updateMouseMovementPolyfillState(event) {\n if (event !== lastMouseEvent) {\n if (lastMouseEvent && event.type === 'mousemove') {\n // $FlowFixMe[unsafe-arithmetic] assuming this is a number\n lastMovementX = event.screenX - lastMouseEvent.screenX; // $FlowFixMe[unsafe-arithmetic] assuming this is a number\n\n lastMovementY = event.screenY - lastMouseEvent.screenY;\n } else {\n lastMovementX = 0;\n lastMovementY = 0;\n }\n\n lastMouseEvent = event;\n }\n}\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nconst MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n return event.relatedTarget;\n },\n movementX: function (event) {\n if ('movementX' in event) {\n return event.movementX;\n }\n\n updateMouseMovementPolyfillState(event);\n return lastMovementX;\n },\n movementY: function (event) {\n if ('movementY' in event) {\n return event.movementY;\n } // Don't need to call updateMouseMovementPolyfillState() here\n // because it's guaranteed to have already run when movementX\n // was copied.\n\n\n return lastMovementY;\n }\n});\n\nconst SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nconst DragEventInterface = assign({}, MouseEventInterface, {\n dataTransfer: 0\n});\n\nconst SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nconst FocusEventInterface = assign({}, UIEventInterface, {\n relatedTarget: 0\n});\n\nconst SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\nconst AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n});\n\nconst SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\nconst ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n});\n\nconst SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\nconst CompositionEventInterface = assign({}, EventInterface, {\n data: 0\n});\n\nconst SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\n// Happens to share the same list for now.\n\nconst SyntheticInputEvent = SyntheticCompositionEvent;\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nconst normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nconst translateToKey = {\n '8': 'Backspace',\n '9': 'Tab',\n '12': 'Clear',\n '13': 'Enter',\n '16': 'Shift',\n '17': 'Control',\n '18': 'Alt',\n '19': 'Pause',\n '20': 'CapsLock',\n '27': 'Escape',\n '32': ' ',\n '33': 'PageUp',\n '34': 'PageDown',\n '35': 'End',\n '36': 'Home',\n '37': 'ArrowLeft',\n '38': 'ArrowUp',\n '39': 'ArrowRight',\n '40': 'ArrowDown',\n '45': 'Insert',\n '46': 'Delete',\n '112': 'F1',\n '113': 'F2',\n '114': 'F3',\n '115': 'F4',\n '116': 'F5',\n '117': 'F6',\n '118': 'F7',\n '119': 'F8',\n '120': 'F9',\n '121': 'F10',\n '122': 'F11',\n '123': 'F12',\n '144': 'NumLock',\n '145': 'ScrollLock',\n '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n const key = // $FlowFixMe[invalid-computed-prop] unable to index with a `mixed` value\n normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n if (key !== 'Unidentified') {\n return key;\n }\n } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n if (nativeEvent.type === 'keypress') {\n const charCode = getEventCharCode( // $FlowFixMe[incompatible-call] unable to narrow to `KeyboardEvent`\n nativeEvent); // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n // $FlowFixMe[invalid-computed-prop] unable to index with a `mixed` value\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n\n return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nconst modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n// $FlowFixMe[missing-local-annot]\n// $FlowFixMe[missing-this-annot]\n\nfunction modifierStateGetter(keyArg) {\n const syntheticEvent = this;\n const nativeEvent = syntheticEvent.nativeEvent;\n\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n\n const keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nconst KeyboardEventInterface = assign({}, UIEventInterface, {\n key: getEventKey,\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode( // $FlowFixMe[incompatible-call] unable to narrow to `KeyboardEvent`\n event);\n }\n\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode( // $FlowFixMe[incompatible-call] unable to narrow to `KeyboardEvent`\n event);\n }\n\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n\n return 0;\n }\n});\n\nconst SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n/**\n * @interface PointerEvent\n * @see http://www.w3.org/TR/pointerevents/\n */\n\nconst PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n});\n\nconst SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\nconst TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n});\n\nconst SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\nconst TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n});\n\nconst SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nconst WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX(event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? // $FlowFixMe[unsafe-arithmetic] assuming this is a number\n -event.wheelDeltaX : 0;\n },\n\n deltaY(event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? // $FlowFixMe[unsafe-arithmetic] assuming this is a number\n -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? // $FlowFixMe[unsafe-arithmetic] assuming this is a number\n -event.wheelDelta : 0;\n },\n\n deltaZ: 0,\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: 0\n});\n\nconst SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n\n/**\n * This plugin invokes action functions on forms, inputs and buttons if\n * the form doesn't prevent default.\n */\n\nfunction extractEvents$6(dispatchQueue, domEventName, maybeTargetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n if (domEventName !== 'submit') {\n return;\n }\n\n if (!maybeTargetInst || maybeTargetInst.stateNode !== nativeEventTarget) {\n // If we're inside a parent root that itself is a parent of this root, then\n // its deepest target won't be the actual form that's being submitted.\n return;\n }\n\n const formInst = maybeTargetInst;\n const form = nativeEventTarget;\n let action = getFiberCurrentPropsFromNode(form).action;\n let submitter = nativeEvent.submitter;\n let submitterAction;\n\n if (submitter) {\n const submitterProps = getFiberCurrentPropsFromNode(submitter);\n submitterAction = submitterProps ? submitterProps.formAction : submitter.getAttribute('formAction');\n\n if (submitterAction != null) {\n // The submitter overrides the form action.\n action = submitterAction; // If the action is a function, we don't want to pass its name\n // value to the FormData since it's controlled by the server.\n\n submitter = null;\n }\n }\n\n if (typeof action !== 'function') {\n return;\n }\n\n const event = new SyntheticEvent('action', 'action', null, nativeEvent, nativeEventTarget);\n\n function submitForm() {\n if (nativeEvent.defaultPrevented) {\n // We let earlier events to prevent the action from submitting.\n return;\n } // Prevent native navigation.\n\n\n event.preventDefault();\n let formData;\n\n if (submitter) {\n // The submitter's value should be included in the FormData.\n // It should be in the document order in the form.\n // Since the FormData constructor invokes the formdata event it also\n // needs to be available before that happens so after construction it's too\n // late. We use a temporary fake node for the duration of this event.\n // TODO: FormData takes a second argument that it's the submitter but this\n // is fairly new so not all browsers support it yet. Switch to that technique\n // when available.\n const temp = submitter.ownerDocument.createElement('input');\n temp.name = submitter.name;\n temp.value = submitter.value;\n submitter.parentNode.insertBefore(temp, submitter);\n formData = new FormData(form);\n temp.parentNode.removeChild(temp);\n } else {\n formData = new FormData(form);\n }\n\n const pendingState = {\n pending: true,\n data: formData,\n method: form.method,\n action: action\n };\n\n startHostTransition(formInst, pendingState, action, formData);\n }\n\n dispatchQueue.push({\n event,\n listeners: [{\n instance: null,\n listener: submitForm,\n currentTarget: form\n }]\n });\n}\nfunction dispatchReplayedFormAction(formInst, form, action, formData) {\n const pendingState = {\n pending: true,\n data: formData,\n method: form.method,\n action: action\n };\n\n startHostTransition(formInst, pendingState, action, formData);\n}\n\n// has this definition built-in.\n\nlet hasScheduledReplayAttempt = false; // The last of each continuous event type. We only need to replay the last one\n// if the last target was dehydrated.\n\nlet queuedFocus = null;\nlet queuedDrag = null;\nlet queuedMouse = null; // For pointer events there can be one latest event per pointerId.\n\nconst queuedPointers = new Map();\nconst queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.\n\nconst queuedExplicitHydrationTargets = [];\nconst discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase\n'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset' // 'submit', // stopPropagation blocks the replay mechanism\n];\nfunction isDiscreteEventThatRequiresHydration(eventType) {\n return discreteReplayableEvents.indexOf(eventType) > -1;\n}\n\nfunction createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n return {\n blockedOn,\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetContainers: [targetContainer]\n };\n} // Resets the replaying for this type of continuous event to no event.\n\n\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'focusin':\n case 'focusout':\n queuedFocus = null;\n break;\n\n case 'dragenter':\n case 'dragleave':\n queuedDrag = null;\n break;\n\n case 'mouseover':\n case 'mouseout':\n queuedMouse = null;\n break;\n\n case 'pointerover':\n case 'pointerout':\n {\n const pointerId = nativeEvent.pointerId;\n queuedPointers.delete(pointerId);\n break;\n }\n\n case 'gotpointercapture':\n case 'lostpointercapture':\n {\n const pointerId = nativeEvent.pointerId;\n queuedPointerCaptures.delete(pointerId);\n break;\n }\n }\n}\n\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n const queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n if (blockedOn !== null) {\n const fiber = getInstanceFromNode(blockedOn);\n\n if (fiber !== null) {\n // Attempt to increase the priority of this target.\n attemptContinuousHydration(fiber);\n }\n }\n\n return queuedEvent;\n } // If we have already queued this exact event, then it's because\n // the different event systems have different DOM event listeners.\n // We can accumulate the flags, and the targetContainers, and\n // store a single event to be replayed.\n\n\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n const targetContainers = existingQueuedEvent.targetContainers;\n\n if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n targetContainers.push(targetContainer);\n }\n\n return existingQueuedEvent;\n}\n\nfunction queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n // These set relatedTarget to null because the replayed event will be treated as if we\n // moved from outside the window (no target) onto the target once it hydrates.\n // Instead of mutating we could clone the event.\n switch (domEventName) {\n case 'focusin':\n {\n const focusEvent = nativeEvent;\n queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n return true;\n }\n\n case 'dragenter':\n {\n const dragEvent = nativeEvent;\n queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n return true;\n }\n\n case 'mouseover':\n {\n const mouseEvent = nativeEvent;\n queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n return true;\n }\n\n case 'pointerover':\n {\n const pointerEvent = nativeEvent;\n const pointerId = pointerEvent.pointerId;\n queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n return true;\n }\n\n case 'gotpointercapture':\n {\n const pointerEvent = nativeEvent;\n const pointerId = pointerEvent.pointerId;\n queuedPointerCaptures.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n return true;\n }\n }\n\n return false;\n} // Check if this target is unblocked. Returns true if it's unblocked.\n\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n // TODO: This function shares a lot of logic with findInstanceBlockingEvent.\n // Try to unify them. It's a bit tricky since it would require two return\n // values.\n const targetInst = getClosestInstanceFromNode(queuedTarget.target);\n\n if (targetInst !== null) {\n const nearestMounted = getNearestMountedFiber(targetInst);\n\n if (nearestMounted !== null) {\n const tag = nearestMounted.tag;\n\n if (tag === SuspenseComponent) {\n const instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n if (instance !== null) {\n // We're blocked on hydrating this boundary.\n // Increase its priority.\n queuedTarget.blockedOn = instance;\n runWithPriority(queuedTarget.priority, () => {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (tag === HostRoot) {\n const root = nearestMounted.stateNode;\n\n if (isRootDehydrated(root)) {\n queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of\n // a root other than sync.\n\n return;\n }\n }\n }\n }\n\n queuedTarget.blockedOn = null;\n}\n\nfunction queueExplicitHydrationTarget(target) {\n // TODO: This will read the priority if it's dispatched by the React\n // event system but not native events. Should read window.event.type, like\n // we do for updates (getCurrentEventPriority).\n const updatePriority = getCurrentUpdatePriority();\n const queuedTarget = {\n blockedOn: null,\n target: target,\n priority: updatePriority\n };\n let i = 0;\n\n for (; i < queuedExplicitHydrationTargets.length; i++) {\n // Stop once we hit the first target with lower priority than\n if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {\n break;\n }\n }\n\n queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);\n\n if (i === 0) {\n attemptExplicitHydrationTarget(queuedTarget);\n }\n}\n\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (queuedEvent.blockedOn !== null) {\n return false;\n }\n\n const targetContainers = queuedEvent.targetContainers;\n\n while (targetContainers.length > 0) {\n const nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n\n if (nextBlockedOn === null) {\n const nativeEvent = queuedEvent.nativeEvent;\n const nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n setReplayingEvent(nativeEventClone);\n nativeEvent.target.dispatchEvent(nativeEventClone);\n resetReplayingEvent();\n } else {\n // We're still blocked. Try again later.\n const fiber = getInstanceFromNode(nextBlockedOn);\n\n if (fiber !== null) {\n attemptContinuousHydration(fiber);\n }\n\n queuedEvent.blockedOn = nextBlockedOn;\n return false;\n } // This target container was successfully dispatched. Try the next.\n\n\n targetContainers.shift();\n }\n\n return true;\n}\n\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n map.delete(key);\n }\n}\n\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = false; // Replay any continuous events.\n\n if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n queuedFocus = null;\n }\n\n if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n queuedDrag = null;\n }\n\n if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n queuedMouse = null;\n }\n\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\n\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n if (queuedEvent.blockedOn === unblocked) {\n queuedEvent.blockedOn = null;\n\n if (!hasScheduledReplayAttempt) {\n hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are\n // now unblocked. This first might not actually be unblocked yet.\n // We could check it early to avoid scheduling an unnecessary callback.\n\n Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n }\n }\n} // [form, submitter or action, formData...]\n\n\nlet lastScheduledReplayQueue = null;\n\nfunction replayUnblockedFormActions(formReplayingQueue) {\n if (lastScheduledReplayQueue === formReplayingQueue) {\n lastScheduledReplayQueue = null;\n }\n\n for (let i = 0; i < formReplayingQueue.length; i += 3) {\n const form = formReplayingQueue[i];\n const submitterOrAction = formReplayingQueue[i + 1];\n const formData = formReplayingQueue[i + 2];\n\n if (typeof submitterOrAction !== 'function') {\n // This action is not hydrated yet. This might be because it's blocked on\n // a different React instance or higher up our tree.\n const blockedOn = findInstanceBlockingTarget(submitterOrAction || form);\n\n if (blockedOn === null) {\n // We're not blocked but we don't have an action. This must mean that\n // this is in another React instance. We'll just skip past it.\n continue;\n } else {\n // We're blocked on something in this React instance. We'll retry later.\n break;\n }\n }\n\n const formInst = getInstanceFromNode(form);\n\n if (formInst !== null) {\n // This is part of our instance.\n // We're ready to replay this. Let's delete it from the queue.\n formReplayingQueue.splice(i, 3);\n i -= 3;\n dispatchReplayedFormAction(formInst, form, submitterOrAction, formData); // Continue without incrementing the index.\n\n continue;\n } // This form must've been part of a different React instance.\n // If we want to preserve ordering between React instances on the same root\n // we'd need some way for the other instance to ping us when it's done.\n // We'll just skip this and let the other instance execute it.\n\n }\n}\n\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n // Schedule a callback to execute any unblocked form actions in.\n // We only keep track of the last queue which means that if multiple React oscillate\n // commits, we could schedule more callbacks than necessary but it's not a big deal\n // and we only really except one instance.\n if (lastScheduledReplayQueue !== formReplayingQueue) {\n lastScheduledReplayQueue = formReplayingQueue;\n Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, () => replayUnblockedFormActions(formReplayingQueue));\n }\n}\n\nfunction retryIfBlockedOn(unblocked) {\n if (queuedFocus !== null) {\n scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n }\n\n if (queuedDrag !== null) {\n scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n }\n\n if (queuedMouse !== null) {\n scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n }\n\n const unblock = queuedEvent => scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n\n for (let i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n const queuedTarget = queuedExplicitHydrationTargets[i];\n\n if (queuedTarget.blockedOn === unblocked) {\n queuedTarget.blockedOn = null;\n }\n }\n\n while (queuedExplicitHydrationTargets.length > 0) {\n const nextExplicitTarget = queuedExplicitHydrationTargets[0];\n\n if (nextExplicitTarget.blockedOn !== null) {\n // We're still blocked.\n break;\n } else {\n attemptExplicitHydrationTarget(nextExplicitTarget);\n\n if (nextExplicitTarget.blockedOn === null) {\n // We're unblocked.\n queuedExplicitHydrationTargets.shift();\n }\n }\n }\n\n {\n // Check the document if there are any queued form actions.\n const root = unblocked.getRootNode();\n const formReplayingQueue = root.$$reactFormReplay;\n\n if (formReplayingQueue != null) {\n for (let i = 0; i < formReplayingQueue.length; i += 3) {\n const form = formReplayingQueue[i];\n const submitterOrAction = formReplayingQueue[i + 1];\n const formProps = getFiberCurrentPropsFromNode(form);\n\n if (typeof submitterOrAction === 'function') {\n // This action has already resolved. We're just waiting to dispatch it.\n if (!formProps) {\n // This was not part of this React instance. It might have been recently\n // unblocking us from dispatching our events. So let's make sure we schedule\n // a retry.\n scheduleReplayQueueIfNeeded(formReplayingQueue);\n }\n\n continue;\n }\n\n let target = form;\n\n if (formProps) {\n // This form belongs to this React instance but the submitter might\n // not be done yet.\n let action = null;\n const submitter = submitterOrAction;\n\n if (submitter && submitter.hasAttribute('formAction')) {\n // The submitter is the one that is responsible for the action.\n target = submitter;\n const submitterProps = getFiberCurrentPropsFromNode(submitter);\n\n if (submitterProps) {\n // The submitter is part of this instance.\n action = submitterProps.formAction;\n } else {\n const blockedOn = findInstanceBlockingTarget(target);\n\n if (blockedOn !== null) {\n // The submitter is not hydrated yet. We'll wait for it.\n continue;\n } // The submitter must have been a part of a different React instance.\n // Except the form isn't. We don't dispatch actions in this scenario.\n\n }\n } else {\n action = formProps.action;\n }\n\n if (typeof action === 'function') {\n formReplayingQueue[i + 1] = action;\n } else {\n // Something went wrong so let's just delete this action.\n formReplayingQueue.splice(i, 3);\n i -= 3;\n } // Schedule a replay in case this unblocked something.\n\n\n scheduleReplayQueueIfNeeded(formReplayingQueue);\n continue;\n } // Something above this target is still blocked so we can't continue yet.\n // We're not sure if this target is actually part of this React instance\n // yet. It could be a different React as a child but at least some parent is.\n // We must continue for any further queued actions.\n\n }\n }\n }\n}\n\nconst ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig; // TODO: can we stop exporting these?\n\nlet _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.\n// We'd like to remove this but it's not clear if this is safe.\n\nfunction setEnabled(enabled) {\n _enabled = !!enabled;\n}\nfunction isEnabled() {\n return _enabled;\n}\nfunction createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n const eventPriority = getEventPriority(domEventName);\n let listenerWrapper;\n\n switch (eventPriority) {\n case DiscreteEventPriority:\n listenerWrapper = dispatchDiscreteEvent;\n break;\n\n case ContinuousEventPriority:\n listenerWrapper = dispatchContinuousEvent;\n break;\n\n case DefaultEventPriority:\n default:\n listenerWrapper = dispatchEvent;\n break;\n }\n\n return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n}\n\nfunction dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n const previousPriority = getCurrentUpdatePriority();\n const prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = null;\n\n try {\n setCurrentUpdatePriority(DiscreteEventPriority);\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig.transition = prevTransition;\n }\n}\n\nfunction dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n const previousPriority = getCurrentUpdatePriority();\n const prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = null;\n\n try {\n setCurrentUpdatePriority(ContinuousEventPriority);\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n setCurrentUpdatePriority(previousPriority);\n ReactCurrentBatchConfig.transition = prevTransition;\n }\n}\n\nfunction dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n if (!_enabled) {\n return;\n }\n\n let blockedOn = findInstanceBlockingEvent(nativeEvent);\n\n if (blockedOn === null) {\n dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n clearIfContinuousEvent(domEventName, nativeEvent);\n return;\n }\n\n if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n nativeEvent.stopPropagation();\n return;\n } // We need to clear only if we didn't queue because\n // queueing is accumulative.\n\n\n clearIfContinuousEvent(domEventName, nativeEvent);\n\n if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {\n while (blockedOn !== null) {\n const fiber = getInstanceFromNode(blockedOn);\n\n if (fiber !== null) {\n attemptSynchronousHydration(fiber);\n }\n\n const nextBlockedOn = findInstanceBlockingEvent(nativeEvent);\n\n if (nextBlockedOn === null) {\n dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n }\n\n if (nextBlockedOn === blockedOn) {\n break;\n }\n\n blockedOn = nextBlockedOn;\n }\n\n if (blockedOn !== null) {\n nativeEvent.stopPropagation();\n }\n\n return;\n } // This is not replayable so we'll invoke it but without a target,\n // in case the event system needs to trace it.\n\n\n dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n const nativeEventTarget = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEventTarget);\n}\nlet return_targetInst = null; // Returns a SuspenseInstance or Container if it's blocked.\n// The return_targetInst field above is conceptually part of the return value.\n\nfunction findInstanceBlockingTarget(targetNode) {\n // TODO: Warn if _enabled is false.\n return_targetInst = null;\n let targetInst = getClosestInstanceFromNode(targetNode);\n\n if (targetInst !== null) {\n const nearestMounted = getNearestMountedFiber(targetInst);\n\n if (nearestMounted === null) {\n // This tree has been unmounted already. Dispatch without a target.\n targetInst = null;\n } else {\n const tag = nearestMounted.tag;\n\n if (tag === SuspenseComponent) {\n const instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n if (instance !== null) {\n // Queue the event to be replayed later. Abort dispatching since we\n // don't want this event dispatched twice through the event system.\n // TODO: If this is the first discrete event in the queue. Schedule an increased\n // priority for this boundary.\n return instance;\n } // This shouldn't happen, something went wrong but to avoid blocking\n // the whole system, dispatch the event without a target.\n // TODO: Warn.\n\n\n targetInst = null;\n } else if (tag === HostRoot) {\n const root = nearestMounted.stateNode;\n\n if (isRootDehydrated(root)) {\n // If this happens during a replay something went wrong and it might block\n // the whole system.\n return getContainerFromFiber(nearestMounted);\n }\n\n targetInst = null;\n } else if (nearestMounted !== targetInst) {\n // If we get an event (ex: img onload) before committing that\n // component's mount, ignore it for now (that is, treat it as if it was an\n // event on a non-React tree). We might also consider queueing events and\n // dispatching them after the mount.\n targetInst = null;\n }\n }\n }\n\n return_targetInst = targetInst; // We're not blocked on anything.\n\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n // Used by SimpleEventPlugin:\n case 'cancel':\n case 'click':\n case 'close':\n case 'contextmenu':\n case 'copy':\n case 'cut':\n case 'auxclick':\n case 'dblclick':\n case 'dragend':\n case 'dragstart':\n case 'drop':\n case 'focusin':\n case 'focusout':\n case 'input':\n case 'invalid':\n case 'keydown':\n case 'keypress':\n case 'keyup':\n case 'mousedown':\n case 'mouseup':\n case 'paste':\n case 'pause':\n case 'play':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointerup':\n case 'ratechange':\n case 'reset':\n case 'resize':\n case 'seeked':\n case 'submit':\n case 'touchcancel':\n case 'touchend':\n case 'touchstart':\n case 'volumechange': // Used by polyfills: (fall through)\n\n case 'change':\n case 'selectionchange':\n case 'textInput':\n case 'compositionstart':\n case 'compositionend':\n case 'compositionupdate': // Only enableCreateEventHandleAPI: (fall through)\n\n case 'beforeblur':\n case 'afterblur': // Not used by React but could be by user code: (fall through)\n\n case 'beforeinput':\n case 'blur':\n case 'fullscreenchange':\n case 'focus':\n case 'hashchange':\n case 'popstate':\n case 'select':\n case 'selectstart':\n return DiscreteEventPriority;\n\n case 'drag':\n case 'dragenter':\n case 'dragexit':\n case 'dragleave':\n case 'dragover':\n case 'mousemove':\n case 'mouseout':\n case 'mouseover':\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'scroll':\n case 'toggle':\n case 'touchmove':\n case 'wheel': // Not used by React but could be by user code: (fall through)\n\n case 'mouseenter':\n case 'mouseleave':\n case 'pointerenter':\n case 'pointerleave':\n return ContinuousEventPriority;\n\n case 'message':\n {\n // We might be in the Scheduler callback.\n // Eventually this mechanism will be replaced by a check\n // of the current priority on the native scheduler.\n const schedulerPriority = getCurrentPriorityLevel();\n\n switch (schedulerPriority) {\n case ImmediatePriority:\n return DiscreteEventPriority;\n\n case UserBlockingPriority:\n return ContinuousEventPriority;\n\n case NormalPriority$1:\n case LowPriority:\n // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.\n return DefaultEventPriority;\n\n case IdlePriority:\n return IdleEventPriority;\n\n default:\n return DefaultEventPriority;\n }\n }\n\n default:\n return DefaultEventPriority;\n }\n}\n\nfunction addEventBubbleListener(target, eventType, listener) {\n target.addEventListener(eventType, listener, false);\n return listener;\n}\nfunction addEventCaptureListener(target, eventType, listener) {\n target.addEventListener(eventType, listener, true);\n return listener;\n}\nfunction addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n target.addEventListener(eventType, listener, {\n capture: true,\n passive\n });\n return listener;\n}\nfunction addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n target.addEventListener(eventType, listener, {\n passive\n });\n return listener;\n}\n\n/**\n * These variables store information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nlet root = null;\nlet startText = null;\nlet fallbackText = null;\nfunction initialize(nativeEventTarget) {\n root = nativeEventTarget;\n startText = getText();\n return true;\n}\nfunction reset() {\n root = null;\n startText = null;\n fallbackText = null;\n}\nfunction getData() {\n if (fallbackText) {\n return fallbackText;\n }\n\n let start;\n const startValue = startText;\n const startLength = startValue.length;\n let end;\n const endValue = getText();\n const endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n const minEnd = startLength - start;\n\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n const sliceTail = end > 1 ? 1 - end : undefined;\n fallbackText = endValue.slice(start, sliceTail);\n return fallbackText;\n}\nfunction getText() {\n if ('value' in root) {\n return root.value;\n }\n\n return root.textContent;\n}\n\nconst END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nconst START_KEYCODE = 229;\nconst canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;\nlet documentMode = null;\n\nif (canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nconst canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nconst useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\nconst SPACEBAR_CODE = 32;\nconst SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nfunction registerEvents$3() {\n registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);\n registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n} // Track whether we've ever handled a keypress on the space key.\n\n\nlet hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n */\n\n\nfunction getCompositionEventType(domEventName) {\n switch (domEventName) {\n case 'compositionstart':\n return 'onCompositionStart';\n\n case 'compositionend':\n return 'onCompositionEnd';\n\n case 'compositionupdate':\n return 'onCompositionUpdate';\n }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n */\n\n\nfunction isFallbackCompositionStart(domEventName, nativeEvent) {\n return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n */\n\n\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'keyup':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n case 'keydown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n\n case 'keypress':\n case 'mousedown':\n case 'focusout':\n // Events are not possible without cancelling IME.\n return true;\n\n default:\n return false;\n }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n const detail = nativeEvent.detail;\n\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n\n return null;\n}\n/**\n * Check if a composition event was triggered by Korean IME.\n * Our fallback mode does not work well with IE's Korean IME,\n * so just use native composition events when Korean IME is used.\n * Although CompositionEvent.locale property is deprecated,\n * it is available in IE, where our fallback mode is enabled.\n *\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isUsingKoreanIME(nativeEvent) {\n return nativeEvent.locale === 'ko';\n} // Track the current IME composition status, if any.\n\n\nlet isComposing = false;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n let eventType;\n let fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(domEventName);\n } else if (!isComposing) {\n if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n eventType = 'onCompositionStart';\n }\n } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n eventType = 'onCompositionEnd';\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!isComposing && eventType === 'onCompositionStart') {\n isComposing = initialize(nativeEventTarget);\n } else if (eventType === 'onCompositionEnd') {\n if (isComposing) {\n fallbackData = getData();\n }\n }\n }\n\n const listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n\n if (listeners.length > 0) {\n const event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event,\n listeners\n });\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n // $FlowFixMe[incompatible-use]\n event.data = fallbackData;\n } else {\n const customData = getDataFromCustomEvent(nativeEvent);\n\n if (customData !== null) {\n // $FlowFixMe[incompatible-use]\n event.data = customData;\n }\n }\n }\n}\n\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case 'compositionend':\n return getDataFromCustomEvent(nativeEvent);\n\n case 'keypress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n const which = nativeEvent.which;\n\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'textInput':\n // Record the characters to be added to the DOM.\n const chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to ignore it.\n\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n */\n\n\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (isComposing) {\n if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n const chars = getData();\n reset();\n isComposing = false;\n return chars;\n }\n\n return null;\n }\n\n switch (domEventName) {\n case 'paste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n\n case 'keypress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (!isKeypressCommand(nativeEvent)) {\n // IE fires the `keypress` event when a user types an emoji via\n // Touch keyboard of Windows. In such a case, the `char` property\n // holds an emoji character like `\\uD83D\\uDE0A`. Because its length\n // is 2, the property `which` does not represent an emoji correctly.\n // In such a case, we directly return the `char` property instead of\n // using `which`.\n if (nativeEvent.char && nativeEvent.char.length > 1) {\n return nativeEvent.char;\n } else if (nativeEvent.which) {\n return String.fromCharCode(nativeEvent.which);\n }\n }\n\n return null;\n\n case 'compositionend':\n return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n\n default:\n return null;\n }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n let chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n } // If no characters are being inserted, no BeforeInput event should\n // be fired.\n\n\n if (!chars) {\n return null;\n }\n\n const listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');\n\n if (listeners.length > 0) {\n const event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event,\n listeners\n }); // $FlowFixMe[incompatible-use]\n\n event.data = chars;\n }\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nfunction extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n}\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nconst supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n const nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\nfunction isEventSupported(eventNameSuffix) {\n if (!canUseDOM) {\n return false;\n }\n\n const eventName = 'on' + eventNameSuffix;\n let isSupported = (eventName in document);\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n return isSupported;\n}\n\nfunction registerEvents$2() {\n registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);\n}\n\nfunction createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n // Flag this event loop as needing state restore.\n enqueueStateRestore(target);\n const listeners = accumulateTwoPhaseListeners(inst, 'onChange');\n\n if (listeners.length > 0) {\n const event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);\n dispatchQueue.push({\n event,\n listeners\n });\n }\n}\n/**\n * For IE shims\n */\n\n\nlet activeElement$1 = null;\nlet activeElementInst$1 = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n const nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n const dispatchQueue = [];\n createAndAccumulateChangeEvent(dispatchQueue, activeElementInst$1, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n\n batchedUpdates(runEventInBatch, dispatchQueue);\n}\n\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n const targetNode = getNodeFromInstance(targetInst);\n\n if (updateValueIfChanged(targetNode)) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (domEventName === 'change') {\n return targetInst;\n }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nlet isInputEventSupported = false;\n\nif (canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\n\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement$1 = target;\n activeElementInst$1 = targetInst;\n activeElement$1.attachEvent('onpropertychange', handlePropertyChange);\n}\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n if (!activeElement$1) {\n return;\n }\n\n activeElement$1.detachEvent('onpropertychange', handlePropertyChange);\n activeElement$1 = null;\n activeElementInst$1 = null;\n}\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n// $FlowFixMe[missing-local-annot]\n\n\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n\n if (getInstIfValueChanged(activeElementInst$1)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n if (domEventName === 'focusin') {\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (domEventName === 'focusout') {\n stopWatchingForValueChange();\n }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst$1);\n }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n const nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (domEventName === 'click') {\n return getInstIfValueChanged(targetInst);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (domEventName === 'input' || domEventName === 'change') {\n return getInstIfValueChanged(targetInst);\n }\n}\n\nfunction handleControlledInputBlur(node, props) {\n if (node.type !== 'number') {\n return;\n }\n\n {\n const isControlled = props.value != null;\n\n if (isControlled) {\n // If controlled, assign the value attribute to the current value on blur\n setDefaultValue(node, 'number', node.value);\n }\n }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nfunction extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n const targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n let getTargetInstFunc, handleEventFunc;\n\n if (shouldUseChangeEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n } else ;\n\n if (getTargetInstFunc) {\n const inst = getTargetInstFunc(domEventName, targetInst);\n\n if (inst) {\n createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n return;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(domEventName, targetNode, targetInst);\n } // When blurring, set the value attribute for number inputs\n\n\n if (domEventName === 'focusout' && targetInst) {\n // These props aren't necessarily the most current but we warn for changing\n // between controlled and uncontrolled, so it doesn't matter and the previous\n // code was also broken for changes.\n const props = targetInst.memoizedProps;\n handleControlledInputBlur(targetNode, props);\n }\n}\n\nfunction registerEvents$1() {\n registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);\n registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);\n registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);\n registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);\n}\n/**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n\n\nfunction extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n const isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';\n const isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';\n\n if (isOverEvent && !isReplayingEvent(nativeEvent)) {\n // If this is an over event with a target, we might have already dispatched\n // the event in the out event of the other target. If this is replayed,\n // then it's because we couldn't dispatch against this target previously\n // so we have to do it now instead.\n const related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n\n if (related) {\n // If the related node is managed by React, we can assume that we have\n // already dispatched the corresponding events during its mouseout.\n if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n return;\n }\n }\n }\n\n if (!isOutEvent && !isOverEvent) {\n // Must not be a mouse or pointer in or out - ignoring.\n return;\n }\n\n let win; // TODO: why is this nullable in the types but we read from it?\n\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n const doc = nativeEventTarget.ownerDocument;\n\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n let from;\n let to;\n\n if (isOutEvent) {\n const related = nativeEvent.relatedTarget || nativeEvent.toElement;\n from = targetInst;\n to = related ? getClosestInstanceFromNode(related) : null;\n\n if (to !== null) {\n const nearestMounted = getNearestMountedFiber(to);\n const tag = to.tag;\n\n if (to !== nearestMounted || tag !== HostComponent && tag !== HostSingleton && tag !== HostText) {\n to = null;\n }\n }\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return;\n }\n\n let SyntheticEventCtor = SyntheticMouseEvent;\n let leaveEventType = 'onMouseLeave';\n let enterEventType = 'onMouseEnter';\n let eventTypePrefix = 'mouse';\n\n if (domEventName === 'pointerout' || domEventName === 'pointerover') {\n SyntheticEventCtor = SyntheticPointerEvent;\n leaveEventType = 'onPointerLeave';\n enterEventType = 'onPointerEnter';\n eventTypePrefix = 'pointer';\n }\n\n const fromNode = from == null ? win : getNodeFromInstance(from);\n const toNode = to == null ? win : getNodeFromInstance(to);\n const leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n let enter = null; // We should only process this nativeEvent if we are processing\n // the first ancestor. Next time, we will ignore the event.\n\n const nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n if (nativeTargetInst === targetInst) {\n const enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);\n enterEvent.target = toNode;\n enterEvent.relatedTarget = fromNode;\n enter = enterEvent;\n }\n\n accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n\n node = node.parentNode;\n }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n let node = getLeafNode(root);\n let nodeStart = 0;\n let nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === TEXT_NODE) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\n\nfunction getOffsets(outerNode) {\n const ownerDocument = outerNode.ownerDocument;\n const win = ownerDocument && ownerDocument.defaultView || window;\n const selection = win.getSelection && win.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n const anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n // expose properties, triggering a \"Permission denied error\" if any of its\n // properties are accessed. The only seemingly possible way to avoid erroring\n // is to access a property that typically works for non-anonymous divs and\n // catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n try {\n /* eslint-disable ft-flow/no-unused-expressions */\n anchorNode.nodeType;\n focusNode.nodeType;\n /* eslint-enable ft-flow/no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\n\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n let length = 0;\n let start = -1;\n let end = -1;\n let indexWithinAnchor = 0;\n let indexWithinFocus = 0;\n let node = outerNode;\n let parentNode = null;\n\n outer: while (true) {\n let next = null;\n\n while (true) {\n if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n start = length + anchorOffset;\n }\n\n if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n end = length + focusOffset;\n }\n\n if (node.nodeType === TEXT_NODE) {\n length += node.nodeValue.length;\n }\n\n if ((next = node.firstChild) === null) {\n break;\n } // Moving from `node` to its first child `next`.\n\n\n parentNode = node;\n node = next;\n }\n\n while (true) {\n if (node === outerNode) {\n // If `outerNode` has children, this is always the second time visiting\n // it. If it has no children, this is still the first loop, and the only\n // valid selection is anchorNode and focusNode both equal to this node\n // and both offsets 0, in which case we will have handled above.\n break outer;\n }\n\n if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n start = length;\n }\n\n if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n end = length;\n }\n\n if ((next = node.nextSibling) !== null) {\n break;\n }\n\n node = parentNode;\n parentNode = node.parentNode;\n } // Moving from `node` to its next sibling `next`.\n\n\n node = next;\n }\n\n if (start === -1 || end === -1) {\n // This should never happen. (Would happen if the anchor/focus nodes aren't\n // actually inside the passed-in node.)\n return null;\n }\n\n return {\n start: start,\n end: end\n };\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\nfunction setOffsets(node, offsets) {\n const doc = node.ownerDocument || document;\n const win = doc && doc.defaultView || window; // Edge fails with \"Object expected\" in some scenarios.\n // (For instance: TinyMCE editor used in a list component that supports pasting to add more,\n // fails when pasting 100+ items)\n\n if (!win.getSelection) {\n return;\n }\n\n const selection = win.getSelection();\n const length = node.textContent.length;\n let start = Math.min(offsets.start, length);\n let end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n\n if (!selection.extend && start > end) {\n const temp = end;\n end = start;\n start = temp;\n }\n\n const startMarker = getNodeForCharacterOffset(node, start);\n const endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n return;\n }\n\n const range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nfunction isTextNode(node) {\n return node && node.nodeType === TEXT_NODE;\n}\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nfunction isInDocument(node) {\n return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n}\n\nfunction isSameOriginFrame(iframe) {\n try {\n // Accessing the contentDocument of a HTMLIframeElement can cause the browser\n // to throw, e.g. if it has a cross-origin src attribute.\n // Safari will show an error in the console when the access results in \"Blocked a frame with origin\". e.g:\n // iframe.contentDocument.defaultView;\n // A safety way is to access one of the cross origin properties: Window or Location\n // Which might result in \"SecurityError\" DOM Exception and it is compatible to Safari.\n // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl\n return typeof iframe.contentWindow.location.href === 'string';\n } catch (err) {\n return false;\n }\n}\n\nfunction getActiveElementDeep() {\n let win = window;\n let element = getActiveElement();\n\n while (element instanceof win.HTMLIFrameElement) {\n if (isSameOriginFrame(element)) {\n win = element.contentWindow;\n } else {\n return element;\n }\n\n element = getActiveElement(win.document);\n }\n\n return element;\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n/**\n * @hasSelectionCapabilities: we get the element types that support selection\n * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`\n * and `selectionEnd` rows.\n */\n\n\nfunction hasSelectionCapabilities(elem) {\n const nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\nfunction getSelectionInformation() {\n const focusedElem = getActiveElementDeep();\n return {\n focusedElem: focusedElem,\n selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection$1(focusedElem) : null\n };\n}\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n\nfunction restoreSelection(priorSelectionInformation) {\n const curFocusedElem = getActiveElementDeep();\n const priorFocusedElem = priorSelectionInformation.focusedElem;\n const priorSelectionRange = priorSelectionInformation.selectionRange;\n\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n setSelection(priorFocusedElem, priorSelectionRange);\n } // Focusing a node can change the scroll position, which is undesirable\n\n\n const ancestors = [];\n let ancestor = priorFocusedElem;\n\n while (ancestor = ancestor.parentNode) {\n if (ancestor.nodeType === ELEMENT_NODE) {\n ancestors.push({\n element: ancestor,\n left: ancestor.scrollLeft,\n top: ancestor.scrollTop\n });\n }\n }\n\n if (typeof priorFocusedElem.focus === 'function') {\n priorFocusedElem.focus();\n }\n\n for (let i = 0; i < ancestors.length; i++) {\n const info = ancestors[i];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n}\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n\nfunction getSelection$1(input) {\n let selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else {\n // Content editable or old IE textarea.\n selection = getOffsets(input);\n }\n\n return selection || {\n start: 0,\n end: 0\n };\n}\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n\nfunction setSelection(input, offsets) {\n const start = offsets.start;\n let end = offsets.end;\n\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else {\n setOffsets(input, offsets);\n }\n}\n\nconst skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nfunction registerEvents() {\n registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);\n}\n\nlet activeElement = null;\nlet activeElementInst = null;\nlet lastSelection = null;\nlet mouseDown = false;\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n */\n\nfunction getSelection(node) {\n if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else {\n const win = node.ownerDocument && node.ownerDocument.defaultView || window;\n const selection = win.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n }\n}\n/**\n * Get document associated with the event target.\n */\n\n\nfunction getEventTargetDocument(eventTarget) {\n return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @param {object} nativeEventTarget\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n const doc = getEventTargetDocument(nativeEventTarget);\n\n if (mouseDown || activeElement == null || activeElement !== getActiveElement(doc)) {\n return;\n } // Only fire when selection has actually changed.\n\n\n const currentSelection = getSelection(activeElement);\n\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n const listeners = accumulateTwoPhaseListeners(activeElementInst, 'onSelect');\n\n if (listeners.length > 0) {\n const event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event,\n listeners\n });\n event.target = activeElement;\n }\n }\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nfunction extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n const targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n\n switch (domEventName) {\n // Track the input node that has focus.\n case 'focusin':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n\n break;\n\n case 'focusout':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n\n case 'mousedown':\n mouseDown = true;\n break;\n\n case 'contextmenu':\n case 'mouseup':\n case 'dragend':\n mouseDown = false;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n\n case 'selectionchange':\n if (skipSelectionChangeEvent) {\n break;\n }\n\n // falls through\n\n case 'keydown':\n case 'keyup':\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n}\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\nfunction makePrefixMap(styleProp, eventName) {\n const prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nconst vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nconst prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nlet style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (canUseDOM) {\n style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n } // Same as above\n\n\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n const prefixMap = vendorPrefixes[eventName];\n\n for (const styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return eventName;\n}\n\nconst ANIMATION_END = getVendorPrefixedEventName('animationend');\nconst ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');\nconst ANIMATION_START = getVendorPrefixedEventName('animationstart');\nconst TRANSITION_END = getVendorPrefixedEventName('transitionend');\n\nconst topLevelEventsToReactNames = new Map(); // NOTE: Capitalization is important in this list!\n//\n// E.g. it needs \"pointerDown\", not \"pointerdown\".\n// This is because we derive both React name (\"onPointerDown\")\n// and DOM name (\"pointerdown\") from the same list.\n//\n// Exceptions that don't match this convention are listed separately.\n//\n// prettier-ignore\n\nconst simpleEventPluginEvents = ['abort', 'auxClick', 'cancel', 'canPlay', 'canPlayThrough', 'click', 'close', 'contextMenu', 'copy', 'cut', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'gotPointerCapture', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'lostPointerCapture', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'pointerCancel', 'pointerDown', 'pointerMove', 'pointerOut', 'pointerOver', 'pointerUp', 'progress', 'rateChange', 'reset', 'resize', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchStart', 'volumeChange', 'scroll', 'scrollEnd', 'toggle', 'touchMove', 'waiting', 'wheel'];\n\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\n\nfunction registerSimpleEvents() {\n for (let i = 0; i < simpleEventPluginEvents.length; i++) {\n const eventName = simpleEventPluginEvents[i];\n const domEventName = eventName.toLowerCase();\n const capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);\n registerSimpleEvent(domEventName, 'on' + capitalizedEvent);\n } // Special cases where event names don't match.\n\n\n registerSimpleEvent(ANIMATION_END, 'onAnimationEnd');\n registerSimpleEvent(ANIMATION_ITERATION, 'onAnimationIteration');\n registerSimpleEvent(ANIMATION_START, 'onAnimationStart');\n registerSimpleEvent('dblclick', 'onDoubleClick');\n registerSimpleEvent('focusin', 'onFocus');\n registerSimpleEvent('focusout', 'onBlur');\n registerSimpleEvent(TRANSITION_END, 'onTransitionEnd');\n}\n\nfunction extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n const reactName = topLevelEventsToReactNames.get(domEventName);\n\n if (reactName === undefined) {\n return;\n }\n\n let SyntheticEventCtor = SyntheticEvent;\n let reactEventType = domEventName;\n\n switch (domEventName) {\n case 'keypress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n // TODO: Fixed in https://bugzilla.mozilla.org/show_bug.cgi?id=968056. Can\n // probably remove.\n if (getEventCharCode(nativeEvent) === 0) {\n return;\n }\n\n /* falls through */\n\n case 'keydown':\n case 'keyup':\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n\n case 'focusin':\n reactEventType = 'focus';\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'focusout':\n reactEventType = 'blur';\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'beforeblur':\n case 'afterblur':\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n\n case 'click':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n // TODO: Fixed in https://phabricator.services.mozilla.com/D26793. Can\n // probably remove.\n if (nativeEvent.button === 2) {\n return;\n }\n\n /* falls through */\n\n case 'auxclick':\n case 'dblclick':\n case 'mousedown':\n case 'mousemove':\n case 'mouseup': // TODO: Disabled elements should not respond to mouse events\n\n /* falls through */\n\n case 'mouseout':\n case 'mouseover':\n case 'contextmenu':\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n\n case 'drag':\n case 'dragend':\n case 'dragenter':\n case 'dragexit':\n case 'dragleave':\n case 'dragover':\n case 'dragstart':\n case 'drop':\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n\n case 'touchcancel':\n case 'touchend':\n case 'touchmove':\n case 'touchstart':\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n\n case 'scroll':\n case 'scrollend':\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n\n case 'wheel':\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n\n case 'copy':\n case 'cut':\n case 'paste':\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n\n case 'gotpointercapture':\n case 'lostpointercapture':\n case 'pointercancel':\n case 'pointerdown':\n case 'pointermove':\n case 'pointerout':\n case 'pointerover':\n case 'pointerup':\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n }\n\n const inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n {\n // Some events don't bubble in the browser.\n // In the past, React has always bubbled them, but this can be surprising.\n // We're going to try aligning closer to the browser behavior by not bubbling\n // them in React either. We'll start by not bubbling onScroll, and then expand.\n const accumulateTargetOnly = !inCapturePhase && ( // TODO: ideally, we'd eventually add all events from\n // nonDelegatedEvents list in DOMPluginEventSystem.\n // Then we can remove this special list.\n // This is a breaking change that can wait until React 18.\n domEventName === 'scroll' || domEventName === 'scrollend');\n const listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n\n if (listeners.length > 0) {\n // Intentionally create event lazily.\n const event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n dispatchQueue.push({\n event,\n listeners\n });\n }\n }\n}\n\nregisterSimpleEvents();\nregisterEvents$1();\nregisterEvents$2();\nregisterEvents();\nregisterEvents$3();\n\nfunction extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n // TODO: we should remove the concept of a \"SimpleEventPlugin\".\n // This is the basic functionality of the event system. All\n // the other plugins are essentially polyfills. So the plugin\n // should probably be inlined somewhere and have its logic\n // be core the to event system. This would potentially allow\n // us to ship builds of React without the polyfilled plugins below.\n extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n const shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the\n // event's native \"bubble\" phase, which means that we're\n // not in the capture phase. That's because we emulate\n // the capture phase here still. This is a trade-off,\n // because in an ideal world we would not emulate and use\n // the phases properly, like we do with the SimpleEvent\n // plugin. However, the plugins below either expect\n // emulation (EnterLeave) or use state localized to that\n // plugin (BeforeInput, Change, Select). The state in\n // these modules complicates things, as you'll essentially\n // get the case where the capture phase event might change\n // state, only for the following bubble event to come in\n // later and not trigger anything as the state now\n // invalidates the heuristics of the event plugin. We\n // could alter all these plugins to work in such ways, but\n // that might cause other unknown side-effects that we\n // can't foresee right now.\n\n if (shouldProcessPolyfillPlugins) {\n extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n\n {\n extractEvents$6(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n }\n }\n} // List of events that need to be individually attached to media elements.\n\n\nconst mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'resize', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather\n// set them on the actual target element itself. This is primarily\n// because these events do not consistently bubble in the DOM.\n\nconst nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'scrollend', 'toggle'].concat(mediaEventTypes));\n\nfunction executeDispatch(event, listener, currentTarget) {\n const type = event.type || 'unknown-event';\n event.currentTarget = currentTarget;\n invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n event.currentTarget = null;\n}\n\nfunction processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n let previousInstance;\n\n if (inCapturePhase) {\n for (let i = dispatchListeners.length - 1; i >= 0; i--) {\n const _dispatchListeners$i = dispatchListeners[i],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget,\n listener = _dispatchListeners$i.listener;\n\n if (instance !== previousInstance && event.isPropagationStopped()) {\n return;\n }\n\n executeDispatch(event, listener, currentTarget);\n previousInstance = instance;\n }\n } else {\n for (let i = 0; i < dispatchListeners.length; i++) {\n const _dispatchListeners$i2 = dispatchListeners[i],\n instance = _dispatchListeners$i2.instance,\n currentTarget = _dispatchListeners$i2.currentTarget,\n listener = _dispatchListeners$i2.listener;\n\n if (instance !== previousInstance && event.isPropagationStopped()) {\n return;\n }\n\n executeDispatch(event, listener, currentTarget);\n previousInstance = instance;\n }\n }\n}\n\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n const inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n for (let i = 0; i < dispatchQueue.length; i++) {\n const _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event,\n listeners = _dispatchQueue$i.listeners;\n processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); // event system doesn't use pooling.\n } // This would be a good time to rethrow if any of the event handlers threw.\n\n\n rethrowCaughtError();\n}\n\nfunction dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n const nativeEventTarget = getEventTarget(nativeEvent);\n const dispatchQueue = [];\n extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n}\n\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n\n const isCapturePhaseListener = false;\n const listenerSet = getEventListenerSet(targetElement);\n const listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n\n if (!listenerSet.has(listenerSetKey)) {\n addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n listenerSet.add(listenerSetKey);\n }\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n\n let eventSystemFlags = 0;\n\n if (isCapturePhaseListener) {\n eventSystemFlags |= IS_CAPTURE_PHASE;\n }\n\n addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n} // This is only used by createEventHandle when the\nconst listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = true;\n allNativeEvents.forEach(domEventName => {\n // We handle selectionchange separately because it\n // doesn't bubble and needs to be on the document.\n if (domEventName !== 'selectionchange') {\n if (!nonDelegatedEvents.has(domEventName)) {\n listenToNativeEvent(domEventName, false, rootContainerElement);\n }\n\n listenToNativeEvent(domEventName, true, rootContainerElement);\n }\n });\n const ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n\n if (ownerDocument !== null) {\n // The selectionchange event also needs deduplication\n // but it is attached to the document.\n if (!ownerDocument[listeningMarker]) {\n ownerDocument[listeningMarker] = true;\n listenToNativeEvent('selectionchange', false, ownerDocument);\n }\n }\n }\n}\n\nfunction addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n let listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be\n // active and not passive.\n\n let isPassiveListener = undefined;\n\n if (passiveBrowserEventsSupported) {\n // Browsers introduced an intervention, making these events\n // passive by default on document. React doesn't bind them\n // to document anymore, but changing this now would undo\n // the performance wins from the change. So we emulate\n // the existing behavior manually on the roots now.\n // https://github.com/facebook/react/issues/19651\n if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {\n isPassiveListener = true;\n }\n }\n\n targetContainer = targetContainer;\n\n\n if (isCapturePhaseListener) {\n if (isPassiveListener !== undefined) {\n addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n } else {\n addEventCaptureListener(targetContainer, domEventName, listener);\n }\n } else {\n if (isPassiveListener !== undefined) {\n addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n } else {\n addEventBubbleListener(targetContainer, domEventName, listener);\n }\n }\n}\n\nfunction isMatchingRootContainer(grandContainer, targetContainer) {\n return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n}\n\nfunction dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n let ancestorInst = targetInst;\n\n if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n const targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we\n\n if (targetInst !== null) {\n // The below logic attempts to work out if we need to change\n // the target fiber to a different ancestor. We had similar logic\n // in the legacy event system, except the big difference between\n // systems is that the modern event system now has an event listener\n // attached to each React Root and React Portal Root. Together,\n // the DOM nodes representing these roots are the \"rootContainer\".\n // To figure out which ancestor instance we should use, we traverse\n // up the fiber tree from the target instance and attempt to find\n // root boundaries that match that of our current \"rootContainer\".\n // If we find that \"rootContainer\", we find the parent fiber\n // sub-tree for that root and make that our ancestor instance.\n let node = targetInst;\n\n mainLoop: while (true) {\n if (node === null) {\n return;\n }\n\n const nodeTag = node.tag;\n\n if (nodeTag === HostRoot || nodeTag === HostPortal) {\n let container = node.stateNode.containerInfo;\n\n if (isMatchingRootContainer(container, targetContainerNode)) {\n break;\n }\n\n if (nodeTag === HostPortal) {\n // The target is a portal, but it's not the rootContainer we're looking for.\n // Normally portals handle their own events all the way down to the root.\n // So we should be able to stop now. However, we don't know if this portal\n // was part of *our* root.\n let grandNode = node.return;\n\n while (grandNode !== null) {\n const grandTag = grandNode.tag;\n\n if (grandTag === HostRoot || grandTag === HostPortal) {\n const grandContainer = grandNode.stateNode.containerInfo;\n\n if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n // This is the rootContainer we're looking for and we found it as\n // a parent of the Portal. That means we can ignore it because the\n // Portal will bubble through to us.\n return;\n }\n }\n\n grandNode = grandNode.return;\n }\n } // Now we need to find it's corresponding host fiber in the other\n // tree. To do this we can use getClosestInstanceFromNode, but we\n // need to validate that the fiber is a host instance, otherwise\n // we need to traverse up through the DOM till we find the correct\n // node that is from the other tree.\n\n\n while (container !== null) {\n const parentNode = getClosestInstanceFromNode(container);\n\n if (parentNode === null) {\n return;\n }\n\n const parentTag = parentNode.tag;\n\n if (parentTag === HostComponent || parentTag === HostText || (parentTag === HostHoistable ) || parentTag === HostSingleton) {\n node = ancestorInst = parentNode;\n continue mainLoop;\n }\n\n container = container.parentNode;\n }\n }\n\n node = node.return;\n }\n }\n }\n\n batchedUpdates(() => dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst));\n}\n\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance,\n listener,\n currentTarget\n };\n}\n\nfunction accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {\n const captureName = reactName !== null ? reactName + 'Capture' : null;\n const reactEventName = inCapturePhase ? captureName : reactName;\n let listeners = [];\n let instance = targetFiber;\n let lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.\n\n while (instance !== null) {\n const _instance = instance,\n stateNode = _instance.stateNode,\n tag = _instance.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n if ((tag === HostComponent || (tag === HostHoistable ) || tag === HostSingleton) && stateNode !== null) {\n lastHostComponent = stateNode; // createEventHandle listeners\n\n\n if (reactEventName !== null) {\n const listener = getListener(instance, reactEventName);\n\n if (listener != null) {\n listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n }\n }\n } // If we are only accumulating events for the target, then we don't\n // continue to propagate through the React fiber tree to find other\n // listeners.\n\n\n if (accumulateTargetOnly) {\n break;\n } // If we are processing the onBeforeBlur event, then we need to take\n\n instance = instance.return;\n }\n\n return listeners;\n} // We should only use this function for:\n// - BeforeInputEventPlugin\n// - ChangeEventPlugin\n// - SelectEventPlugin\n// This is because we only process these plugins\n// in the bubble phase, so we need to accumulate two\n// phase event listeners (via emulation).\n\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n const captureName = reactName + 'Capture';\n const listeners = [];\n let instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.\n\n while (instance !== null) {\n const _instance2 = instance,\n stateNode = _instance2.stateNode,\n tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n if ((tag === HostComponent || (tag === HostHoistable ) || tag === HostSingleton) && stateNode !== null) {\n const currentTarget = stateNode;\n const captureListener = getListener(instance, captureName);\n\n if (captureListener != null) {\n listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n }\n\n const bubbleListener = getListener(instance, reactName);\n\n if (bubbleListener != null) {\n listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n }\n }\n\n instance = instance.return;\n }\n\n return listeners;\n}\n\nfunction getParent(inst) {\n if (inst === null) {\n return null;\n }\n\n do {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.\n // That is depending on if we want nested subtrees (layers) to bubble\n // events to their parent. We could also go through parentNode on the\n // host node but that wouldn't work for React Native and doesn't let us\n // do the portal feature.\n } while (inst && inst.tag !== HostComponent && inst.tag !== HostSingleton);\n\n if (inst) {\n return inst;\n }\n\n return null;\n}\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n let nodeA = instA;\n let nodeB = instB;\n let depthA = 0;\n\n for (let tempA = nodeA; tempA; tempA = getParent(tempA)) {\n depthA++;\n }\n\n let depthB = 0;\n\n for (let tempB = nodeB; tempB; tempB = getParent(tempB)) {\n depthB++;\n } // If A is deeper, crawl up.\n\n\n while (depthA - depthB > 0) {\n nodeA = getParent(nodeA);\n depthA--;\n } // If B is deeper, crawl up.\n\n\n while (depthB - depthA > 0) {\n nodeB = getParent(nodeB);\n depthB--;\n } // Walk in lockstep until we find a match.\n\n\n let depth = depthA;\n\n while (depth--) {\n if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n return nodeA;\n }\n\n nodeA = getParent(nodeA);\n nodeB = getParent(nodeB);\n }\n\n return null;\n}\n\nfunction accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n const registrationName = event._reactName;\n const listeners = [];\n let instance = target;\n\n while (instance !== null) {\n if (instance === common) {\n break;\n }\n\n const _instance3 = instance,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode,\n tag = _instance3.tag;\n\n if (alternate !== null && alternate === common) {\n break;\n }\n\n if ((tag === HostComponent || (tag === HostHoistable ) || tag === HostSingleton) && stateNode !== null) {\n const currentTarget = stateNode;\n\n if (inCapturePhase) {\n const captureListener = getListener(instance, registrationName);\n\n if (captureListener != null) {\n listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n }\n } else if (!inCapturePhase) {\n const bubbleListener = getListener(instance, registrationName);\n\n if (bubbleListener != null) {\n listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n }\n }\n }\n\n instance = instance.return;\n }\n\n if (listeners.length !== 0) {\n dispatchQueue.push({\n event,\n listeners\n });\n }\n} // We should only use this function for:\n// - EnterLeaveEventPlugin\n// This is because we only process this plugin\n// in the bubble phase, so we need to accumulate two\n// phase event listeners.\n\n\nfunction accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n const common = from && to ? getLowestCommonAncestor(from, to) : null;\n\n if (from !== null) {\n accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n }\n\n if (to !== null && enterEvent !== null) {\n accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n }\n}\nfunction getListenerSetKey(domEventName, capture) {\n return domEventName + \"__\" + (capture ? 'capture' : 'bubble');\n}\n\n// It also can turn \\u0000 into \\uFFFD inside attributes.\n// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n// If we have a mismatch, it might be caused by that.\n// We will still patch up in this case but not fire the warning.\n\n\nconst NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\nconst NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\nfunction normalizeMarkupForTextOrAttribute(markup) {\n\n const markupString = typeof markup === 'string' ? markup : '' + markup;\n return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n}\n\nfunction checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {\n const normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n const normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n\n if (normalizedServerText === normalizedClientText) {\n return;\n }\n\n if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n // In concurrent roots, we throw when there's a text mismatch and revert to\n // client rendering, up to the nearest Suspense boundary.\n throw Error(formatProdErrorMessage(425));\n }\n}\n\nfunction noop$1() {}\n\nfunction trapClickOnNonInteractiveElement(node) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n // Just set it using the onclick property so that we don't have to manage any\n // bookkeeping for it. Not sure if we need to clear it when the listener is\n // removed.\n // TODO: Only do this for the relevant Safaris maybe?\n node.onclick = noop$1;\n}\nconst xlinkNamespace = 'http://www.w3.org/1999/xlink';\nconst xmlNamespace = 'http://www.w3.org/XML/1998/namespace';\n\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case 'children':\n {\n if (typeof value === 'string') {\n // textContent on a <textarea> will cause the placeholder to not\n // show within the <textarea> until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n\n\n const canSetTextContent = tag !== 'body' && (tag !== 'textarea' || value !== '');\n\n if (canSetTextContent) {\n setTextContent(domElement, value);\n }\n } else if (typeof value === 'number') {\n\n const canSetTextContent = tag !== 'body';\n\n if (canSetTextContent) {\n setTextContent(domElement, '' + value);\n }\n }\n\n break;\n }\n // These are very common props and therefore are in the beginning of the switch.\n // TODO: aria-label is a very common prop but allows booleans so is not like the others\n // but should ideally go in this list too.\n\n case 'className':\n setValueForKnownAttribute(domElement, 'class', value);\n break;\n\n case 'tabIndex':\n // This has to be case sensitive in SVG.\n setValueForKnownAttribute(domElement, 'tabindex', value);\n break;\n\n case 'dir':\n case 'role':\n case 'viewBox':\n case 'width':\n case 'height':\n {\n setValueForKnownAttribute(domElement, key, value);\n break;\n }\n\n case 'style':\n {\n setValueForStyles(domElement, value, prevValue);\n break;\n }\n // These attributes accept URLs. These must not allow javascript: URLS.\n\n case 'src':\n case 'href':\n {\n\n if (value == null || typeof value === 'function' || typeof value === 'symbol' || typeof value === 'boolean') {\n domElement.removeAttribute(key);\n break;\n } // `setAttribute` with objects becomes only `[object]` in IE8/9,\n\n const sanitizedValue = sanitizeURL('' + value);\n domElement.setAttribute(key, sanitizedValue);\n break;\n }\n\n case 'action':\n case 'formAction':\n {\n\n {\n if (typeof value === 'function') {\n // Set a javascript URL that doesn't do anything. We don't expect this to be invoked\n // because we'll preventDefault, but it can happen if a form is manually submitted or\n // if someone calls stopPropagation before React gets the event.\n // If CSP is used to block javascript: URLs that's fine too. It just won't show this\n // error message but the URL will be logged.\n domElement.setAttribute(key, // eslint-disable-next-line no-script-url\n \"javascript:throw new Error('\" + 'A React form was unexpectedly submitted. If you called form.submit() manually, ' + \"consider using form.requestSubmit() instead. If you\\\\'re trying to use \" + 'event.stopPropagation() in a submit event handler, consider also calling ' + 'event.preventDefault().' + \"')\");\n break;\n } else if (typeof prevValue === 'function') {\n // When we're switching off a Server Action that was originally hydrated.\n // The server control these fields during SSR that are now trailing.\n // The regular diffing doesn't apply since we compare against the previous props.\n // Instead, we need to force them to be set to whatever they should be now.\n // This would be a lot cleaner if we did this whole fork in the per-tag approach.\n if (key === 'formAction') {\n if (tag !== 'input') {\n // Setting the name here isn't completely safe for inputs if this is switching\n // to become a radio button. In that case we let the tag based override take\n // control.\n setProp(domElement, tag, 'name', props.name, props, null);\n }\n\n setProp(domElement, tag, 'formEncType', props.formEncType, props, null);\n setProp(domElement, tag, 'formMethod', props.formMethod, props, null);\n setProp(domElement, tag, 'formTarget', props.formTarget, props, null);\n } else {\n setProp(domElement, tag, 'encType', props.encType, props, null);\n setProp(domElement, tag, 'method', props.method, props, null);\n setProp(domElement, tag, 'target', props.target, props, null);\n }\n }\n }\n\n if (value == null || !enableFormActions || typeof value === 'symbol' || typeof value === 'boolean') {\n domElement.removeAttribute(key);\n break;\n } // `setAttribute` with objects becomes only `[object]` in IE8/9,\n\n const sanitizedValue = sanitizeURL('' + value);\n domElement.setAttribute(key, sanitizedValue);\n break;\n }\n\n case 'onClick':\n {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n if (value != null) {\n\n trapClickOnNonInteractiveElement(domElement);\n }\n\n break;\n }\n\n case 'onScroll':\n {\n if (value != null) {\n\n listenToNonDelegatedEvent('scroll', domElement);\n }\n\n break;\n }\n\n case 'onScrollEnd':\n {\n if (value != null) {\n\n listenToNonDelegatedEvent('scrollend', domElement);\n }\n\n break;\n }\n\n case 'dangerouslySetInnerHTML':\n {\n if (value != null) {\n if (typeof value !== 'object' || !('__html' in value)) {\n throw Error(formatProdErrorMessage(61));\n }\n\n const nextHtml = value.__html;\n\n if (nextHtml != null) {\n if (props.children != null) {\n throw Error(formatProdErrorMessage(60));\n }\n\n {\n setInnerHTML$1(domElement, nextHtml);\n }\n }\n }\n\n break;\n }\n // Note: `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`. We have special logic for handling this.\n\n case 'multiple':\n {\n domElement.multiple = value && typeof value !== 'function' && typeof value !== 'symbol';\n break;\n }\n\n case 'muted':\n {\n domElement.muted = value && typeof value !== 'function' && typeof value !== 'symbol';\n break;\n }\n\n case 'suppressContentEditableWarning':\n case 'suppressHydrationWarning':\n case 'defaultValue': // Reserved\n\n case 'defaultChecked':\n case 'innerHTML':\n {\n // Noop\n break;\n }\n\n case 'autoFocus':\n {\n // We polyfill it separately on the client during commit.\n // We could have excluded it in the property list instead of\n // adding a special case here, but then it wouldn't be emitted\n // on server rendering (but we *do* want to emit it in SSR).\n break;\n }\n\n case 'xlinkHref':\n {\n if (value == null || typeof value === 'function' || typeof value === 'boolean' || typeof value === 'symbol') {\n domElement.removeAttribute('xlink:href');\n break;\n } // `setAttribute` with objects becomes only `[object]` in IE8/9,\n\n const sanitizedValue = sanitizeURL('' + value);\n domElement.setAttributeNS(xlinkNamespace, 'xlink:href', sanitizedValue);\n break;\n }\n\n case 'contentEditable':\n case 'spellCheck':\n case 'draggable':\n case 'value':\n case 'autoReverse':\n case 'externalResourcesRequired':\n case 'focusable':\n case 'preserveAlpha':\n {\n // Booleanish String\n // These are \"enumerated\" attributes that accept \"true\" and \"false\".\n // In React, we let users pass `true` and `false` even though technically\n // these aren't boolean attributes (they are coerced to strings).\n // The SVG attributes are case-sensitive. Since the HTML attributes are\n // insensitive they also work even though we canonically use lower case.\n if (value != null && typeof value !== 'function' && typeof value !== 'symbol') {\n\n domElement.setAttribute(key, '' + value);\n } else {\n domElement.removeAttribute(key);\n }\n\n break;\n }\n // Boolean\n\n case 'allowFullScreen':\n case 'async':\n case 'autoPlay':\n case 'controls':\n case 'default':\n case 'defer':\n case 'disabled':\n case 'disablePictureInPicture':\n case 'disableRemotePlayback':\n case 'formNoValidate':\n case 'hidden':\n case 'loop':\n case 'noModule':\n case 'noValidate':\n case 'open':\n case 'playsInline':\n case 'readOnly':\n case 'required':\n case 'reversed':\n case 'scoped':\n case 'seamless':\n case 'itemScope':\n {\n if (value && typeof value !== 'function' && typeof value !== 'symbol') {\n domElement.setAttribute(key, '');\n } else {\n domElement.removeAttribute(key);\n }\n\n break;\n }\n // Overloaded Boolean\n\n case 'capture':\n case 'download':\n {\n // An attribute that can be used as a flag as well as with a value.\n // When true, it should be present (set either to an empty string or its name).\n // When false, it should be omitted.\n // For any other value, should be present with that value.\n if (value === true) {\n domElement.setAttribute(key, '');\n } else if (value !== false && value != null && typeof value !== 'function' && typeof value !== 'symbol') {\n\n domElement.setAttribute(key, value);\n } else {\n domElement.removeAttribute(key);\n }\n\n break;\n }\n\n case 'cols':\n case 'rows':\n case 'size':\n case 'span':\n {\n // These are HTML attributes that must be positive numbers.\n if (value != null && typeof value !== 'function' && typeof value !== 'symbol' && !isNaN(value) && value >= 1) {\n\n domElement.setAttribute(key, value);\n } else {\n domElement.removeAttribute(key);\n }\n\n break;\n }\n\n case 'rowSpan':\n case 'start':\n {\n // These are HTML attributes that must be numbers.\n if (value != null && typeof value !== 'function' && typeof value !== 'symbol' && !isNaN(value)) {\n\n domElement.setAttribute(key, value);\n } else {\n domElement.removeAttribute(key);\n }\n\n break;\n }\n\n case 'xlinkActuate':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:actuate', value);\n break;\n\n case 'xlinkArcrole':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:arcrole', value);\n break;\n\n case 'xlinkRole':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:role', value);\n break;\n\n case 'xlinkShow':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:show', value);\n break;\n\n case 'xlinkTitle':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:title', value);\n break;\n\n case 'xlinkType':\n setValueForNamespacedAttribute(domElement, xlinkNamespace, 'xlink:type', value);\n break;\n\n case 'xmlBase':\n setValueForNamespacedAttribute(domElement, xmlNamespace, 'xml:base', value);\n break;\n\n case 'xmlLang':\n setValueForNamespacedAttribute(domElement, xmlNamespace, 'xml:lang', value);\n break;\n\n case 'xmlSpace':\n setValueForNamespacedAttribute(domElement, xmlNamespace, 'xml:space', value);\n break;\n // Properties that should not be allowed on custom elements.\n\n case 'is':\n {\n // passed it to createElement. We don't also need the attribute.\n // However, our tests currently query for it so it's plausible someone\n // else does too so it's break.\n\n\n setValueForAttribute(domElement, 'is', value);\n break;\n }\n\n case 'innerText':\n case 'textContent':\n\n // Fall through\n\n default:\n {\n if (key.length > 2 && (key[0] === 'o' || key[0] === 'O') && (key[1] === 'n' || key[1] === 'N')) ; else {\n const attributeName = getAttributeAlias(key);\n setValueForAttribute(domElement, attributeName, value);\n }\n }\n }\n}\n\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case 'style':\n {\n setValueForStyles(domElement, value, prevValue);\n break;\n }\n\n case 'dangerouslySetInnerHTML':\n {\n if (value != null) {\n if (typeof value !== 'object' || !('__html' in value)) {\n throw Error(formatProdErrorMessage(61));\n }\n\n const nextHtml = value.__html;\n\n if (nextHtml != null) {\n if (props.children != null) {\n throw Error(formatProdErrorMessage(60));\n }\n\n {\n setInnerHTML$1(domElement, nextHtml);\n }\n }\n }\n\n break;\n }\n\n case 'children':\n {\n if (typeof value === 'string') {\n setTextContent(domElement, value);\n } else if (typeof value === 'number') {\n setTextContent(domElement, '' + value);\n }\n\n break;\n }\n\n case 'onScroll':\n {\n if (value != null) {\n\n listenToNonDelegatedEvent('scroll', domElement);\n }\n\n break;\n }\n\n case 'onScrollEnd':\n {\n if (value != null) {\n\n listenToNonDelegatedEvent('scrollend', domElement);\n }\n\n break;\n }\n\n case 'onClick':\n {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n if (value != null) {\n\n trapClickOnNonInteractiveElement(domElement);\n }\n\n break;\n }\n\n case 'suppressContentEditableWarning':\n case 'suppressHydrationWarning':\n case 'innerHTML':\n {\n // Noop\n break;\n }\n\n case 'innerText': // Properties\n\n case 'textContent':\n\n // Fall through\n\n default:\n {\n if (registrationNameDependencies.hasOwnProperty(key)) ; else {\n {\n if (typeof value === 'boolean') {\n // Special case before the new flag is on\n value = '' + value;\n }\n\n setValueForAttribute(domElement, key, value);\n }\n }\n }\n }\n}\n\nfunction setInitialProperties(domElement, tag, props) {\n\n\n switch (tag) {\n case 'div':\n case 'span':\n case 'svg':\n case 'path':\n case 'a':\n case 'g':\n case 'p':\n case 'li':\n {\n // Fast track the most common tag types\n break;\n }\n\n case 'input':\n {\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement);\n let name = null;\n let type = null;\n let value = null;\n let defaultValue = null;\n let checked = null;\n let defaultChecked = null;\n\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n switch (propKey) {\n case 'name':\n {\n name = propValue;\n break;\n }\n\n case 'type':\n {\n type = propValue;\n break;\n }\n\n case 'checked':\n {\n checked = propValue;\n break;\n }\n\n case 'defaultChecked':\n {\n defaultChecked = propValue;\n break;\n }\n\n case 'value':\n {\n value = propValue;\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = propValue;\n break;\n }\n\n case 'children':\n case 'dangerouslySetInnerHTML':\n {\n if (propValue != null) {\n throw Error(formatProdErrorMessage(137, tag));\n }\n\n break;\n }\n\n default:\n {\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n } // TODO: Make sure we check if this is still unmounted or do any clean\n initInput(domElement, value, defaultValue, checked, defaultChecked, type, name, false);\n track(domElement);\n return;\n }\n\n case 'select':\n {\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement);\n let value = null;\n let defaultValue = null;\n let multiple = null;\n\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n switch (propKey) {\n case 'value':\n {\n value = propValue; // This is handled by initSelect below.\n\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = propValue; // This is handled by initSelect below.\n\n break;\n }\n\n case 'multiple':\n {\n multiple = propValue; // TODO: We don't actually have to fall through here because we set it\n // in initSelect anyway. We can remove the special case in setProp.\n }\n // Fallthrough\n\n default:\n {\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n }\n initSelect(domElement, value, defaultValue, multiple);\n return;\n }\n\n case 'textarea':\n {\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement);\n let value = null;\n let defaultValue = null;\n let children = null;\n\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n switch (propKey) {\n case 'value':\n {\n value = propValue; // This is handled by initTextarea below.\n\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = propValue;\n break;\n }\n\n case 'children':\n {\n children = propValue; // Handled by initTextarea above.\n\n break;\n }\n\n case 'dangerouslySetInnerHTML':\n {\n if (propValue != null) {\n // TODO: Do we really need a special error message for this. It's also pretty blunt.\n throw Error(formatProdErrorMessage(91));\n }\n\n break;\n }\n\n default:\n {\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n } // TODO: Make sure we check if this is still unmounted or do any clean\n initTextarea(domElement, value, defaultValue, children);\n track(domElement);\n return;\n }\n\n case 'option':\n {\n\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n switch (propKey) {\n case 'selected':\n {\n // TODO: Remove support for selected on option.\n domElement.selected = propValue && typeof propValue !== 'function' && typeof propValue !== 'symbol';\n break;\n }\n\n default:\n {\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n }\n\n return;\n }\n\n case 'dialog':\n {\n listenToNonDelegatedEvent('cancel', domElement);\n listenToNonDelegatedEvent('close', domElement);\n break;\n }\n\n case 'iframe':\n case 'object':\n {\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the load event.\n listenToNonDelegatedEvent('load', domElement);\n break;\n }\n\n case 'video':\n case 'audio':\n {\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for all the media events.\n for (let i = 0; i < mediaEventTypes.length; i++) {\n listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n }\n\n break;\n }\n\n case 'image':\n {\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for error and load events.\n listenToNonDelegatedEvent('error', domElement);\n listenToNonDelegatedEvent('load', domElement);\n break;\n }\n\n case 'details':\n {\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the toggle event.\n listenToNonDelegatedEvent('toggle', domElement);\n break;\n }\n\n case 'embed':\n case 'source':\n case 'img':\n case 'link':\n {\n // These are void elements that also need delegated events.\n listenToNonDelegatedEvent('error', domElement);\n listenToNonDelegatedEvent('load', domElement); // We fallthrough to the return of the void elements\n }\n\n case 'area':\n case 'base':\n case 'br':\n case 'col':\n case 'hr':\n case 'keygen':\n case 'meta':\n case 'param':\n case 'track':\n case 'wbr':\n case 'menuitem':\n {\n // Void elements\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n switch (propKey) {\n case 'children':\n case 'dangerouslySetInnerHTML':\n {\n // TODO: Can we make this a DEV warning to avoid this deny list?\n throw Error(formatProdErrorMessage(137, tag));\n }\n // defaultChecked and defaultValue are ignored by setProp\n\n default:\n {\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n }\n\n return;\n }\n\n default:\n {\n if (isCustomElement(tag)) {\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n setPropOnCustomElement(domElement, tag, propKey, propValue, props, null);\n }\n\n return;\n }\n }\n }\n\n for (const propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n\n const propValue = props[propKey];\n\n if (propValue == null) {\n continue;\n }\n\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n\n switch (tag) {\n case 'div':\n case 'span':\n case 'svg':\n case 'path':\n case 'a':\n case 'g':\n case 'p':\n case 'li':\n {\n // Fast track the most common tag types\n break;\n }\n\n case 'input':\n {\n let name = null;\n let type = null;\n let value = null;\n let defaultValue = null;\n let lastDefaultValue = null;\n let checked = null;\n let defaultChecked = null;\n\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null) {\n switch (propKey) {\n case 'checked':\n {\n break;\n }\n\n case 'value':\n {\n // This is handled by updateWrapper below.\n break;\n }\n\n case 'defaultValue':\n {\n lastDefaultValue = lastProp;\n }\n // defaultChecked and defaultValue are ignored by setProp\n // Fallthrough\n\n default:\n {\n if (!nextProps.hasOwnProperty(propKey)) setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && (nextProp != null || lastProp != null)) {\n switch (propKey) {\n case 'type':\n {\n type = nextProp;\n break;\n }\n\n case 'name':\n {\n name = nextProp;\n break;\n }\n\n case 'checked':\n {\n checked = nextProp;\n break;\n }\n\n case 'defaultChecked':\n {\n defaultChecked = nextProp;\n break;\n }\n\n case 'value':\n {\n value = nextProp;\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = nextProp;\n break;\n }\n\n case 'children':\n case 'dangerouslySetInnerHTML':\n {\n if (nextProp != null) {\n throw Error(formatProdErrorMessage(137, tag));\n }\n\n break;\n }\n\n default:\n {\n if (nextProp !== lastProp) setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n }\n }\n // happen after updating the rest of props. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n\n\n updateInput(domElement, value, defaultValue, lastDefaultValue, checked, defaultChecked, type, name);\n return;\n }\n\n case 'select':\n {\n let value = null;\n let defaultValue = null;\n let multiple = null;\n let wasMultiple = null;\n\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null) {\n switch (propKey) {\n case 'value':\n {\n // This is handled by updateWrapper below.\n break;\n }\n // defaultValue are ignored by setProp\n\n case 'multiple':\n {\n wasMultiple = lastProp; // TODO: Move special case in here from setProp.\n }\n // Fallthrough\n\n default:\n {\n if (!nextProps.hasOwnProperty(propKey)) setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && (nextProp != null || lastProp != null)) {\n switch (propKey) {\n case 'value':\n {\n value = nextProp; // This is handled by updateSelect below.\n\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = nextProp;\n break;\n }\n\n case 'multiple':\n {\n multiple = nextProp; // TODO: Just move the special case in here from setProp.\n }\n // Fallthrough\n\n default:\n {\n if (nextProp !== lastProp) setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n }\n } // <select> value update needs to occur after <option> children\n // reconciliation\n\n\n updateSelect(domElement, value, defaultValue, multiple, wasMultiple);\n return;\n }\n\n case 'textarea':\n {\n let value = null;\n let defaultValue = null;\n\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null && !nextProps.hasOwnProperty(propKey)) {\n switch (propKey) {\n case 'value':\n {\n // This is handled by updateTextarea below.\n break;\n }\n\n case 'children':\n {\n // TODO: This doesn't actually do anything if it updates.\n break;\n }\n // defaultValue is ignored by setProp\n\n default:\n {\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && (nextProp != null || lastProp != null)) {\n switch (propKey) {\n case 'value':\n {\n value = nextProp; // This is handled by updateTextarea below.\n\n break;\n }\n\n case 'defaultValue':\n {\n defaultValue = nextProp;\n break;\n }\n\n case 'children':\n {\n // TODO: This doesn't actually do anything if it updates.\n break;\n }\n\n case 'dangerouslySetInnerHTML':\n {\n if (nextProp != null) {\n // TODO: Do we really need a special error message for this. It's also pretty blunt.\n throw Error(formatProdErrorMessage(91));\n }\n\n break;\n }\n\n default:\n {\n if (nextProp !== lastProp) setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n }\n }\n\n updateTextarea(domElement, value, defaultValue);\n return;\n }\n\n case 'option':\n {\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null && !nextProps.hasOwnProperty(propKey)) {\n switch (propKey) {\n case 'selected':\n {\n // TODO: Remove support for selected on option.\n domElement.selected = false;\n break;\n }\n\n default:\n {\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && nextProp !== lastProp && (nextProp != null || lastProp != null)) {\n switch (propKey) {\n case 'selected':\n {\n // TODO: Remove support for selected on option.\n domElement.selected = nextProp && typeof nextProp !== 'function' && typeof nextProp !== 'symbol';\n break;\n }\n\n default:\n {\n setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n }\n }\n\n return;\n }\n\n case 'img':\n case 'link':\n case 'area':\n case 'base':\n case 'br':\n case 'col':\n case 'embed':\n case 'hr':\n case 'keygen':\n case 'meta':\n case 'param':\n case 'source':\n case 'track':\n case 'wbr':\n case 'menuitem':\n {\n // Void elements\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null && !nextProps.hasOwnProperty(propKey)) {\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && nextProp !== lastProp && (nextProp != null || lastProp != null)) {\n switch (propKey) {\n case 'children':\n case 'dangerouslySetInnerHTML':\n {\n if (nextProp != null) {\n // TODO: Can we make this a DEV warning to avoid this deny list?\n throw Error(formatProdErrorMessage(137, tag));\n }\n\n break;\n }\n // defaultChecked and defaultValue are ignored by setProp\n\n default:\n {\n setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n }\n }\n\n return;\n }\n\n default:\n {\n if (isCustomElement(tag)) {\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null && !nextProps.hasOwnProperty(propKey)) {\n setPropOnCustomElement(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && nextProp !== lastProp && (nextProp != null || lastProp != null)) {\n setPropOnCustomElement(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n\n return;\n }\n }\n }\n\n for (const propKey in lastProps) {\n const lastProp = lastProps[propKey];\n\n if (lastProps.hasOwnProperty(propKey) && lastProp != null && !nextProps.hasOwnProperty(propKey)) {\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n\n for (const propKey in nextProps) {\n const nextProp = nextProps[propKey];\n const lastProp = lastProps[propKey];\n\n if (nextProps.hasOwnProperty(propKey) && nextProp !== lastProp && (nextProp != null || lastProp != null)) {\n setProp(domElement, tag, propKey, nextProp, nextProps, lastProp);\n }\n }\n}\n\nfunction diffHydratedProperties(domElement, tag, props, isConcurrentMode, shouldWarnDev, hostContext) {\n\n\n switch (tag) {\n case 'dialog':\n listenToNonDelegatedEvent('cancel', domElement);\n listenToNonDelegatedEvent('close', domElement);\n break;\n\n case 'iframe':\n case 'object':\n case 'embed':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the load event.\n listenToNonDelegatedEvent('load', domElement);\n break;\n\n case 'video':\n case 'audio':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for all the media events.\n for (let i = 0; i < mediaEventTypes.length; i++) {\n listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n }\n\n break;\n\n case 'source':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the error event.\n listenToNonDelegatedEvent('error', domElement);\n break;\n\n case 'img':\n case 'image':\n case 'link':\n // We listen to these events in case to ensure emulated bubble\n // listeners still fire for error and load events.\n listenToNonDelegatedEvent('error', domElement);\n listenToNonDelegatedEvent('load', domElement);\n break;\n\n case 'details':\n // We listen to this event in case to ensure emulated bubble\n // listeners still fire for the toggle event.\n listenToNonDelegatedEvent('toggle', domElement);\n break;\n\n case 'input':\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement); // TODO: Make sure we check if this is still unmounted or do any clean\n // post mount to force it to diverge from attributes. However, for\n // option and select we don't quite do the same thing and select\n // is not resilient to the DOM state changing so we don't do that here.\n // TODO: Consider not doing this for input and textarea.\n\n initInput(domElement, props.value, props.defaultValue, props.checked, props.defaultChecked, props.type, props.name, true);\n track(domElement);\n break;\n\n case 'option':\n break;\n\n case 'select':\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement);\n break;\n\n case 'textarea':\n // listeners still fire for the invalid event.\n\n\n listenToNonDelegatedEvent('invalid', domElement); // TODO: Make sure we check if this is still unmounted or do any clean\n initTextarea(domElement, props.value, props.defaultValue, props.children);\n track(domElement);\n break;\n }\n\n const children = props.children; // For text content children we compare against textContent. This\n // might match additional HTML that is hidden when we read it using\n // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n // satisfies our requirement. Our requirement is not to produce perfect\n // HTML and attributes. Ideally we should preserve structure but it's\n // ok not to if the visible content is still enough to indicate what\n // even listeners these nodes might be wired up to.\n // TODO: Warn if there is more than a single textNode as a child.\n // TODO: Should we use domElement.firstChild.nodeValue to compare?\n\n if (typeof children === 'string' || typeof children === 'number') {\n if (domElement.textContent !== '' + children) {\n if (props.suppressHydrationWarning !== true) {\n checkForUnmatchedText(domElement.textContent, children, isConcurrentMode);\n }\n\n if (!isConcurrentMode || !enableClientRenderFallbackOnTextMismatch) {\n // We really should be patching this in the commit phase but since\n // this only affects legacy mode hydration which is deprecated anyway\n // we can get away with it.\n // Host singletons get their children appended and don't use the text\n // content mechanism.\n if (tag !== 'body') {\n domElement.textContent = children;\n }\n }\n }\n }\n\n if (props.onScroll != null) {\n listenToNonDelegatedEvent('scroll', domElement);\n }\n\n if (props.onScrollEnd != null) {\n listenToNonDelegatedEvent('scrollend', domElement);\n }\n\n if (props.onClick != null) {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(domElement);\n }\n}\nfunction diffHydratedText(textNode, text, isConcurrentMode) {\n const isDifferent = textNode.nodeValue !== text;\n return isDifferent;\n}\nfunction restoreControlledState(domElement, tag, props) {\n switch (tag) {\n case 'input':\n restoreControlledInputState(domElement, props);\n return;\n\n case 'textarea':\n restoreControlledTextareaState(domElement, props);\n return;\n\n case 'select':\n restoreControlledSelectState(domElement, props);\n return;\n }\n}\n\nconst SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\nconst SUSPENSE_START_DATA = '$';\nconst SUSPENSE_END_DATA = '/$';\nconst SUSPENSE_PENDING_START_DATA = '$?';\nconst SUSPENSE_FALLBACK_START_DATA = '$!';\nconst FORM_STATE_IS_MATCHING = 'F!';\nconst FORM_STATE_IS_NOT_MATCHING = 'F';\nconst STYLE = 'style';\nconst HostContextNamespaceNone = 0;\nconst HostContextNamespaceSvg = 1;\nconst HostContextNamespaceMath = 2;\nlet eventsEnabled = null;\nlet selectionInformation = null;\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction getRootHostContext(rootContainerInstance) {\n let type;\n let context;\n const nodeType = rootContainerInstance.nodeType;\n\n switch (nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n {\n type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n const root = rootContainerInstance.documentElement;\n\n if (root) {\n const namespaceURI = root.namespaceURI;\n context = namespaceURI ? getOwnHostContext(namespaceURI) : HostContextNamespaceNone;\n } else {\n context = HostContextNamespaceNone;\n }\n\n break;\n }\n\n default:\n {\n const container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n type = container.tagName;\n const namespaceURI = container.namespaceURI;\n\n if (!namespaceURI) {\n switch (type) {\n case 'svg':\n context = HostContextNamespaceSvg;\n break;\n\n case 'math':\n context = HostContextNamespaceMath;\n break;\n\n default:\n context = HostContextNamespaceNone;\n break;\n }\n } else {\n const ownContext = getOwnHostContext(namespaceURI);\n context = getChildHostContextProd(ownContext, type);\n }\n\n break;\n }\n }\n\n return context;\n}\n\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case SVG_NAMESPACE:\n return HostContextNamespaceSvg;\n\n case MATH_NAMESPACE:\n return HostContextNamespaceMath;\n\n default:\n return HostContextNamespaceNone;\n }\n}\n\nfunction getChildHostContextProd(parentNamespace, type) {\n if (parentNamespace === HostContextNamespaceNone) {\n // No (or default) parent namespace: potential entry point.\n switch (type) {\n case 'svg':\n return HostContextNamespaceSvg;\n\n case 'math':\n return HostContextNamespaceMath;\n\n default:\n return HostContextNamespaceNone;\n }\n }\n\n if (parentNamespace === HostContextNamespaceSvg && type === 'foreignObject') {\n // We're leaving SVG.\n return HostContextNamespaceNone;\n } // By default, pass namespace below.\n\n\n return parentNamespace;\n}\n\nfunction getChildHostContext(parentHostContext, type) {\n\n const parentNamespace = parentHostContext;\n return getChildHostContextProd(parentNamespace, type);\n}\nfunction getPublicInstance(instance) {\n return instance;\n}\nfunction prepareForCommit(containerInfo) {\n eventsEnabled = isEnabled();\n selectionInformation = getSelectionInformation();\n let activeInstance = null;\n\n setEnabled(false);\n return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n restoreSelection(selectionInformation);\n setEnabled(eventsEnabled);\n eventsEnabled = null;\n selectionInformation = null;\n}\nfunction createHoistableInstance(type, props, rootContainerInstance, internalInstanceHandle) {\n const ownerDocument = getOwnerDocumentFromRootContainer(rootContainerInstance);\n const domElement = ownerDocument.createElement(type);\n precacheFiberNode(internalInstanceHandle, domElement);\n updateFiberProps(domElement, props);\n setInitialProperties(domElement, type, props);\n markNodeAsHoistable(domElement);\n return domElement;\n}\nfunction createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n let hostContextProd;\n\n {\n hostContextProd = hostContext;\n }\n\n const ownerDocument = getOwnerDocumentFromRootContainer(rootContainerInstance);\n let domElement;\n\n switch (hostContextProd) {\n case HostContextNamespaceSvg:\n domElement = ownerDocument.createElementNS(SVG_NAMESPACE, type);\n break;\n\n case HostContextNamespaceMath:\n domElement = ownerDocument.createElementNS(MATH_NAMESPACE, type);\n break;\n\n default:\n switch (type) {\n case 'svg':\n {\n domElement = ownerDocument.createElementNS(SVG_NAMESPACE, type);\n break;\n }\n\n case 'math':\n {\n domElement = ownerDocument.createElementNS(MATH_NAMESPACE, type);\n break;\n }\n\n case 'script':\n {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n const div = ownerDocument.createElement('div');\n\n div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n // This is guaranteed to yield a script element.\n\n const firstChild = div.firstChild;\n domElement = div.removeChild(firstChild);\n break;\n }\n\n case 'select':\n {\n if (typeof props.is === 'string') {\n domElement = ownerDocument.createElement('select', {\n is: props.is\n });\n } else {\n // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n domElement = ownerDocument.createElement('select');\n }\n\n if (props.multiple) {\n domElement.multiple = true;\n } else if (props.size) {\n // Setting a size greater than 1 causes a select to behave like `multiple=true`, where\n // it is possible that no option is selected.\n //\n // This is only necessary when a select in \"single selection mode\".\n domElement.size = props.size;\n }\n\n break;\n }\n\n default:\n {\n if (typeof props.is === 'string') {\n domElement = ownerDocument.createElement(type, {\n is: props.is\n });\n } else {\n // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n domElement = ownerDocument.createElement(type);\n }\n }\n }\n\n }\n\n precacheFiberNode(internalInstanceHandle, domElement);\n updateFiberProps(domElement, props);\n return domElement;\n}\nfunction appendInitialChild(parentInstance, child) {\n parentInstance.appendChild(child);\n}\nfunction finalizeInitialChildren(domElement, type, props, hostContext) {\n setInitialProperties(domElement, type, props);\n\n switch (type) {\n case 'button':\n case 'input':\n case 'select':\n case 'textarea':\n return !!props.autoFocus;\n\n case 'img':\n return true;\n\n default:\n return false;\n }\n}\nfunction shouldSetTextContent(type, props) {\n return type === 'textarea' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n}\nfunction createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n\n const textNode = getOwnerDocumentFromRootContainer(rootContainerInstance).createTextNode(text);\n precacheFiberNode(internalInstanceHandle, textNode);\n return textNode;\n}\nfunction getCurrentEventPriority() {\n const currentEvent = window.event;\n\n if (currentEvent === undefined) {\n return DefaultEventPriority;\n }\n\n return getEventPriority(currentEvent.type);\n}\nlet currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n const event = window.event;\n\n if (event && event.type === 'popstate') {\n // This is a popstate event. Attempt to render any transition during this\n // event synchronously. Unless we already attempted during this event.\n if (event === currentPopstateTransitionEvent) {\n // We already attempted to render this popstate transition synchronously.\n // Any subsequent attempts must have happened as the result of a derived\n // update, like startTransition inside useEffect, or useDV. Switch back to\n // the default behavior for all remaining transitions during the current\n // popstate event.\n return false;\n } else {\n // Cache the current event in case a derived transition is scheduled.\n // (Refer to previous branch.)\n currentPopstateTransitionEvent = event;\n return true;\n }\n } // We're not inside a popstate event.\n\n\n currentPopstateTransitionEvent = null;\n return false;\n}\n// if a component just imports ReactDOM (e.g. for findDOMNode).\n// Some environments might not have setTimeout or clearTimeout.\n\nconst scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;\nconst cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;\nconst noTimeout = -1;\nconst localPromise = typeof Promise === 'function' ? Promise : undefined;\nfunction preparePortalMount(portalInstance) {\n listenToAllSupportedEvents(portalInstance);\n}\nconst scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : typeof localPromise !== 'undefined' ? callback => localPromise.resolve(null).then(callback).catch(handleErrorInNextTick) : scheduleTimeout; // TODO: Determine the best fallback here.\n\nfunction handleErrorInNextTick(error) {\n setTimeout(() => {\n throw error;\n });\n} // -------------------\nfunction commitMount(domElement, type, newProps, internalInstanceHandle) {\n // Despite the naming that might imply otherwise, this method only\n // fires if there is an `Update` effect scheduled during mounting.\n // This happens if `finalizeInitialChildren` returns `true` (which it\n // does to implement the `autoFocus` attribute on the client). But\n // there are also other cases when this might happen (such as patching\n // up text content during hydration mismatch). So we'll check this again.\n switch (type) {\n case 'button':\n case 'input':\n case 'select':\n case 'textarea':\n if (newProps.autoFocus) {\n domElement.focus();\n }\n\n return;\n\n case 'img':\n {\n if (newProps.src) {\n domElement.src = newProps.src;\n }\n\n return;\n }\n }\n}\nfunction commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n // Diff and update the properties.\n updateProperties(domElement, type, oldProps, newProps); // Update the props handle so that we know which props are the ones with\n // with current event handlers.\n\n updateFiberProps(domElement, newProps);\n}\nfunction resetTextContent(domElement) {\n setTextContent(domElement, '');\n}\nfunction commitTextUpdate(textInstance, oldText, newText) {\n textInstance.nodeValue = newText;\n}\nfunction appendChild(parentInstance, child) {\n parentInstance.appendChild(child);\n}\nfunction appendChildToContainer(container, child) {\n let parentNode;\n\n if (container.nodeType === COMMENT_NODE) {\n parentNode = container.parentNode;\n parentNode.insertBefore(child, container);\n } else {\n parentNode = container;\n parentNode.appendChild(child);\n } // This container might be used for a portal.\n // If something inside a portal is clicked, that click should bubble\n // through the React tree. However, on Mobile Safari the click would\n // never bubble through the *DOM* tree unless an ancestor with onclick\n // event exists. So we wouldn't see it and dispatch it.\n // This is why we ensure that non React root containers have inline onclick\n // defined.\n // https://github.com/facebook/react/issues/11918\n\n\n const reactRootContainer = container._reactRootContainer;\n\n if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {\n // TODO: This cast may not be sound for SVG, MathML or custom elements.\n trapClickOnNonInteractiveElement(parentNode);\n }\n}\nfunction insertBefore(parentInstance, child, beforeChild) {\n parentInstance.insertBefore(child, beforeChild);\n}\nfunction insertInContainerBefore(container, child, beforeChild) {\n if (container.nodeType === COMMENT_NODE) {\n container.parentNode.insertBefore(child, beforeChild);\n } else {\n container.insertBefore(child, beforeChild);\n }\n}\n\nfunction removeChild(parentInstance, child) {\n parentInstance.removeChild(child);\n}\nfunction removeChildFromContainer(container, child) {\n if (container.nodeType === COMMENT_NODE) {\n container.parentNode.removeChild(child);\n } else {\n container.removeChild(child);\n }\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n let node = suspenseInstance; // Delete all nodes within this suspense boundary.\n // There might be nested nodes so we need to keep track of how\n // deep we are and only break out when we're back on top.\n\n let depth = 0;\n\n do {\n const nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n\n if (nextNode && nextNode.nodeType === COMMENT_NODE) {\n const data = nextNode.data;\n\n if (data === SUSPENSE_END_DATA) {\n if (depth === 0) {\n parentInstance.removeChild(nextNode); // Retry if any event replaying was blocked on this.\n\n retryIfBlockedOn(suspenseInstance);\n return;\n } else {\n depth--;\n }\n } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {\n depth++;\n }\n } // $FlowFixMe[incompatible-type] we bail out when we get a null\n\n\n node = nextNode;\n } while (node); // TODO: Warn, we didn't find the end comment boundary.\n // Retry if any event replaying was blocked on this.\n\n\n retryIfBlockedOn(suspenseInstance);\n}\nfunction clearSuspenseBoundaryFromContainer(container, suspenseInstance) {\n if (container.nodeType === COMMENT_NODE) {\n clearSuspenseBoundary(container.parentNode, suspenseInstance);\n } else if (container.nodeType === ELEMENT_NODE) {\n clearSuspenseBoundary(container, suspenseInstance);\n } else ; // Retry if any event replaying was blocked on this.\n\n\n retryIfBlockedOn(container);\n}\nfunction hideInstance(instance) {\n // TODO: Does this work for all element types? What about MathML? Should we\n // pass host context to this method?\n instance = instance;\n const style = instance.style; // $FlowFixMe[method-unbinding]\n\n if (typeof style.setProperty === 'function') {\n style.setProperty('display', 'none', 'important');\n } else {\n style.display = 'none';\n }\n}\nfunction hideTextInstance(textInstance) {\n textInstance.nodeValue = '';\n}\nfunction unhideInstance(instance, props) {\n instance = instance;\n const styleProp = props[STYLE];\n const display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;\n instance.style.display = display == null || typeof display === 'boolean' ? '' : // The value would've errored already if it wasn't safe.\n // eslint-disable-next-line react-internal/safe-string-coercion\n ('' + display).trim();\n}\nfunction unhideTextInstance(textInstance, text) {\n textInstance.nodeValue = text;\n}\nfunction clearContainer(container) {\n const nodeType = container.nodeType;\n\n if (nodeType === DOCUMENT_NODE) {\n clearContainerSparingly(container);\n } else if (nodeType === ELEMENT_NODE) {\n switch (container.nodeName) {\n case 'HEAD':\n case 'HTML':\n case 'BODY':\n clearContainerSparingly(container);\n return;\n\n default:\n {\n container.textContent = '';\n }\n }\n }\n}\n\nfunction clearContainerSparingly(container) {\n let node;\n let nextNode = container.firstChild;\n\n if (nextNode && nextNode.nodeType === DOCUMENT_TYPE_NODE) {\n nextNode = nextNode.nextSibling;\n }\n\n while (nextNode) {\n node = nextNode;\n nextNode = nextNode.nextSibling;\n\n switch (node.nodeName) {\n case 'HTML':\n case 'HEAD':\n case 'BODY':\n {\n const element = node;\n clearContainerSparingly(element); // If these singleton instances had previously been rendered with React they\n // may still hold on to references to the previous fiber tree. We detatch them\n // prospectively to reset them to a baseline starting state since we cannot create\n // new instances.\n\n detachDeletedInstance(element);\n continue;\n }\n // Script tags are retained to avoid an edge case bug. Normally scripts will execute if they\n // are ever inserted into the DOM. However when streaming if a script tag is opened but not\n // yet closed some browsers create and insert the script DOM Node but the script cannot execute\n // yet until the closing tag is parsed. If something causes React to call clearContainer while\n // this DOM node is in the document but not yet executable the DOM node will be removed from the\n // document and when the script closing tag comes in the script will not end up running. This seems\n // to happen in Chrome/Firefox but not Safari at the moment though this is not necessarily specified\n // behavior so it could change in future versions of browsers. While leaving all scripts is broader\n // than strictly necessary this is the least amount of additional code to avoid this breaking\n // edge case.\n //\n // Style tags are retained because they may likely come from 3rd party scripts and extensions\n\n case 'SCRIPT':\n case 'STYLE':\n {\n continue;\n }\n // Stylesheet tags are retained because tehy may likely come from 3rd party scripts and extensions\n\n case 'LINK':\n {\n if (node.rel.toLowerCase() === 'stylesheet') {\n continue;\n }\n }\n }\n\n container.removeChild(node);\n }\n\n return;\n} // Making this so we can eventually move all of the instance caching to the commit phase.\nfunction isHydratableText(text) {\n return text !== '';\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n while (instance.nodeType === ELEMENT_NODE) {\n const element = instance;\n const anyProps = props;\n\n if (element.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (!inRootOrSingleton) {\n // Usually we error for mismatched tags.\n if (element.nodeName === 'INPUT' && element.type === 'hidden') ; else {\n return null;\n }\n } // In root or singleton parents we skip past mismatched instances.\n\n } else if (!inRootOrSingleton) {\n // Match\n if (type === 'input' && element.type === 'hidden') {\n\n const name = anyProps.name == null ? null : '' + anyProps.name;\n\n if (anyProps.type !== 'hidden' || element.getAttribute('name') !== name) ; else {\n return element;\n }\n } else {\n return element;\n }\n } else if (isMarkedHoistable(element)) ; else {\n // We have an Element with the right type.\n // We are going to try to exclude it if we can definitely identify it as a hoisted Node or if\n // we can guess that the node is likely hoisted or was inserted by a 3rd party script or browser extension\n // using high entropy attributes for certain types. This technique will fail for strange insertions like\n // extension prepending <div> in the <body> but that already breaks before and that is an edge case.\n switch (type) {\n // case 'title':\n //We assume all titles are matchable. You should only have one in the Document, at least in a hoistable scope\n // and if you are a HostComponent with type title we must either be in an <svg> context or this title must have an `itemProp` prop.\n case 'meta':\n {\n // The only way to opt out of hoisting meta tags is to give it an itemprop attribute. We assume there will be\n // not 3rd party meta tags that are prepended, accepting the cases where this isn't true because meta tags\n // are usually only functional for SSR so even in a rare case where we did bind to an injected tag the runtime\n // implications are minimal\n if (!element.hasAttribute('itemprop')) {\n // This is a Hoistable\n break;\n }\n\n return element;\n }\n\n case 'link':\n {\n // Links come in many forms and we do expect 3rd parties to inject them into <head> / <body>. We exclude known resources\n // and then use high-entroy attributes like href which are almost always used and almost always unique to filter out unlikely\n // matches.\n const rel = element.getAttribute('rel');\n\n if (rel === 'stylesheet' && element.hasAttribute('data-precedence')) {\n // This is a stylesheet resource\n break;\n } else if (rel !== anyProps.rel || element.getAttribute('href') !== (anyProps.href == null ? null : anyProps.href) || element.getAttribute('crossorigin') !== (anyProps.crossOrigin == null ? null : anyProps.crossOrigin) || element.getAttribute('title') !== (anyProps.title == null ? null : anyProps.title)) {\n // rel + href should usually be enough to uniquely identify a link however crossOrigin can vary for rel preconnect\n // and title could vary for rel alternate\n break;\n }\n\n return element;\n }\n\n case 'style':\n {\n // Styles are hard to match correctly. We can exclude known resources but otherwise we accept the fact that a non-hoisted style tags\n // in <head> or <body> are likely never going to be unmounted given their position in the document and the fact they likely hold global styles\n if (element.hasAttribute('data-precedence')) {\n // This is a style resource\n break;\n }\n\n return element;\n }\n\n case 'script':\n {\n // Scripts are a little tricky, we exclude known resources and then similar to links try to use high-entropy attributes\n // to reject poor matches. One challenge with scripts are inline scripts. We don't attempt to check text content which could\n // in theory lead to a hydration error later if a 3rd party injected an inline script before the React rendered nodes.\n // Falling back to client rendering if this happens should be seemless though so we will try this hueristic and revisit later\n // if we learn it is problematic\n const srcAttr = element.getAttribute('src');\n\n if (srcAttr !== (anyProps.src == null ? null : anyProps.src) || element.getAttribute('type') !== (anyProps.type == null ? null : anyProps.type) || element.getAttribute('crossorigin') !== (anyProps.crossOrigin == null ? null : anyProps.crossOrigin)) {\n // This script is for a different src/type/crossOrigin. It may be a script resource\n // or it may just be a mistmatch\n if (srcAttr && element.hasAttribute('async') && !element.hasAttribute('itemprop')) {\n // This is an async script resource\n break;\n }\n }\n\n return element;\n }\n\n default:\n {\n // We have excluded the most likely cases of mismatch between hoistable tags, 3rd party script inserted tags,\n // and browser extension inserted tags. While it is possible this is not the right match it is a decent hueristic\n // that should work in the vast majority of cases.\n return element;\n }\n }\n }\n\n const nextInstance = getNextHydratableSibling(element);\n\n if (nextInstance === null) {\n break;\n }\n\n instance = nextInstance;\n } // This is a suspense boundary or Text node or we got the end.\n // Suspense Boundaries are never expected to be injected by 3rd parties. If we see one it should be matched\n // and this is a hydration error.\n // Text Nodes are also not expected to be injected by 3rd parties. This is less of a guarantee for <body>\n // but it seems reasonable and conservative to reject this as a hydration error as well\n\n\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n // Empty strings are not parsed by HTML so there won't be a correct match here.\n if (text === '') return null;\n\n while (instance.nodeType !== TEXT_NODE) {\n if (instance.nodeType === ELEMENT_NODE && instance.nodeName === 'INPUT' && instance.type === 'hidden') ; else if (!inRootOrSingleton) {\n return null;\n }\n\n const nextInstance = getNextHydratableSibling(instance);\n\n if (nextInstance === null) {\n return null;\n }\n\n instance = nextInstance;\n } // This has now been refined to a text node.\n\n\n return instance;\n}\nfunction canHydrateSuspenseInstance(instance, inRootOrSingleton) {\n while (instance.nodeType !== COMMENT_NODE) {\n if (!inRootOrSingleton) {\n return null;\n }\n\n const nextInstance = getNextHydratableSibling(instance);\n\n if (nextInstance === null) {\n return null;\n }\n\n instance = nextInstance;\n } // This has now been refined to a suspense node.\n\n\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return instance.data === SUSPENSE_PENDING_START_DATA;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return instance.data === SUSPENSE_FALLBACK_START_DATA;\n}\nfunction getSuspenseInstanceFallbackErrorDetails(instance) {\n const dataset = instance.nextSibling && instance.nextSibling.dataset;\n let digest;\n\n if (dataset) {\n digest = dataset.dgst;\n }\n\n {\n // Object gets DCE'd if constructed in tail position and matches callsite destructuring\n return {\n digest\n };\n }\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n instance._reactRetry = callback;\n}\nfunction canHydrateFormStateMarker(instance, inRootOrSingleton) {\n while (instance.nodeType !== COMMENT_NODE) {\n if (!inRootOrSingleton) {\n return null;\n }\n\n const nextInstance = getNextHydratableSibling(instance);\n\n if (nextInstance === null) {\n return null;\n }\n\n instance = nextInstance;\n }\n\n const nodeData = instance.data;\n\n if (nodeData === FORM_STATE_IS_MATCHING || nodeData === FORM_STATE_IS_NOT_MATCHING) {\n const markerInstance = instance;\n return markerInstance;\n }\n\n return null;\n}\nfunction isFormStateMarkerMatching(markerInstance) {\n return markerInstance.data === FORM_STATE_IS_MATCHING;\n}\n\nfunction getNextHydratable(node) {\n // Skip non-hydratable nodes.\n for (; node != null; node = node.nextSibling) {\n const nodeType = node.nodeType;\n\n if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n break;\n }\n\n if (nodeType === COMMENT_NODE) {\n const nodeData = node.data;\n\n if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA || (nodeData === FORM_STATE_IS_MATCHING || nodeData === FORM_STATE_IS_NOT_MATCHING)) {\n break;\n }\n\n if (nodeData === SUSPENSE_END_DATA) {\n return null;\n }\n }\n }\n\n return node;\n}\n\nfunction getNextHydratableSibling(instance) {\n return getNextHydratable(instance.nextSibling);\n}\nfunction getFirstHydratableChild(parentInstance) {\n return getNextHydratable(parentInstance.firstChild);\n}\nfunction getFirstHydratableChildWithinContainer(parentContainer) {\n return getNextHydratable(parentContainer.firstChild);\n}\nfunction getFirstHydratableChildWithinSuspenseInstance(parentInstance) {\n return getNextHydratable(parentInstance.nextSibling);\n}\nfunction hydrateInstance(instance, type, props, hostContext, internalInstanceHandle, shouldWarnDev) {\n precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events\n // get attached.\n\n updateFiberProps(instance, props); // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n // when the legacy root API is removed.\n\n const isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n diffHydratedProperties(instance, type, props, isConcurrentMode);\n}\nfunction hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {\n precacheFiberNode(internalInstanceHandle, textInstance); // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n return diffHydratedText(textInstance, text);\n}\nfunction hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {\n precacheFiberNode(internalInstanceHandle, suspenseInstance);\n}\nfunction getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n let node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.\n // There might be nested nodes so we need to keep track of how\n // deep we are and only break out when we're back on top.\n\n let depth = 0;\n\n while (node) {\n if (node.nodeType === COMMENT_NODE) {\n const data = node.data;\n\n if (data === SUSPENSE_END_DATA) {\n if (depth === 0) {\n return getNextHydratableSibling(node);\n } else {\n depth--;\n }\n } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n depth++;\n }\n }\n\n node = node.nextSibling;\n } // TODO: Warn, we didn't find the end comment boundary.\n\n\n return null;\n} // Returns the SuspenseInstance if this node is a direct child of a\n// SuspenseInstance. I.e. if its previous sibling is a Comment with\n// SUSPENSE_x_START_DATA. Otherwise, null.\n\nfunction getParentSuspenseInstance(targetInstance) {\n let node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.\n // There might be nested nodes so we need to keep track of how\n // deep we are and only break out when we're back on top.\n\n let depth = 0;\n\n while (node) {\n if (node.nodeType === COMMENT_NODE) {\n const data = node.data;\n\n if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n if (depth === 0) {\n return node;\n } else {\n depth--;\n }\n } else if (data === SUSPENSE_END_DATA) {\n depth++;\n }\n }\n\n node = node.previousSibling;\n }\n\n return null;\n}\nfunction commitHydratedContainer(container) {\n // Retry if any event replaying was blocked on this.\n retryIfBlockedOn(container);\n}\nfunction commitHydratedSuspenseInstance(suspenseInstance) {\n // Retry if any event replaying was blocked on this.\n retryIfBlockedOn(suspenseInstance);\n}\nfunction shouldDeleteUnhydratedTailInstances(parentType) {\n return parentType !== 'form' && parentType !== 'button';\n}\nfunction didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode, shouldWarnDev) {\n checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode);\n}\nfunction didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode, shouldWarnDev) {\n if (parentProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode);\n }\n}\nfunction isHostSingletonType(type) {\n return type === 'html' || type === 'head' || type === 'body';\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance, hostContext, validateDOMNestingDev) {\n\n const ownerDocument = getOwnerDocumentFromRootContainer(rootContainerInstance);\n\n switch (type) {\n case 'html':\n {\n const documentElement = ownerDocument.documentElement;\n\n if (!documentElement) {\n throw Error(formatProdErrorMessage(452));\n }\n\n return documentElement;\n }\n\n case 'head':\n {\n const head = ownerDocument.head;\n\n if (!head) {\n throw Error(formatProdErrorMessage(453));\n }\n\n return head;\n }\n\n case 'body':\n {\n const body = ownerDocument.body;\n\n if (!body) {\n throw Error(formatProdErrorMessage(454));\n }\n\n return body;\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(451));\n }\n }\n}\nfunction acquireSingletonInstance(type, props, instance, internalInstanceHandle) {\n\n const attributes = instance.attributes;\n\n while (attributes.length) {\n instance.removeAttributeNode(attributes[0]);\n }\n\n setInitialProperties(instance, type, props);\n precacheFiberNode(internalInstanceHandle, instance);\n updateFiberProps(instance, props);\n}\nfunction releaseSingletonInstance(instance) {\n const attributes = instance.attributes;\n\n while (attributes.length) {\n instance.removeAttributeNode(attributes[0]);\n }\n\n detachDeletedInstance(instance);\n}\nfunction clearSingleton(instance) {\n const element = instance;\n let node = element.firstChild;\n\n while (node) {\n const nextNode = node.nextSibling;\n const nodeName = node.nodeName;\n\n if (isMarkedHoistable(node) || nodeName === 'HEAD' || nodeName === 'BODY' || nodeName === 'SCRIPT' || nodeName === 'STYLE' || nodeName === 'LINK' && node.rel.toLowerCase() === 'stylesheet') ; else {\n element.removeChild(node);\n }\n\n node = nextNode;\n }\n\n return;\n} // -------------------\nconst NotLoaded =\n/* */\n0b000;\nconst Loaded =\n/* */\n0b001;\nconst Errored =\n/* */\n0b010;\nconst Settled =\n/* */\n0b011;\nconst Inserted =\n/* */\n0b100;\nfunction prepareToCommitHoistables() {\n tagCaches = null;\n} // global collections of Resources\n\nconst preloadPropsMap = new Map();\nconst preconnectsSet = new Set(); // getRootNode is missing from IE and old jsdom versions\n\nfunction getHoistableRoot(container) {\n // $FlowFixMe[method-unbinding]\n return typeof container.getRootNode === 'function' ?\n /* $FlowFixMe[incompatible-return] Flow types this as returning a `Node`,\n * but it's either a `Document` or `ShadowRoot`. */\n container.getRootNode() : container.ownerDocument;\n}\n\nfunction getCurrentResourceRoot() {\n const currentContainer = getCurrentRootHostContainer();\n return currentContainer ? getHoistableRoot(currentContainer) : null;\n}\n\nfunction getDocumentFromRoot(root) {\n return root.ownerDocument || root;\n} // We want this to be the default dispatcher on ReactDOMSharedInternals but we don't want to mutate\n// internals in Module scope. Instead we export it and Internals will import it. There is already a cycle\n// from Internals -> ReactDOM -> HostConfig -> Internals so this doesn't introduce a new one.\n\n\nconst ReactDOMClientDispatcher = {\n prefetchDNS: prefetchDNS$1,\n preconnect: preconnect$1,\n preload: preload$1,\n preloadModule: preloadModule$1,\n preinitStyle,\n preinitScript,\n preinitModuleScript\n}; // We expect this to get inlined. It is a function mostly to communicate the special nature of\n// how we resolve the HoistableRoot for ReactDOM.pre*() methods. Because we support calling\n// these methods outside of render there is no way to know which Document or ShadowRoot is 'scoped'\n// and so we have to fall back to something universal. Currently we just refer to the global document.\n// This is notable because nowhere else in ReactDOM do we actually reference the global document or window\n// because we may be rendering inside an iframe.\n\nfunction getDocumentForImperativeFloatMethods() {\n return document;\n}\n\nfunction preconnectAs(rel, href, crossOrigin) {\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (typeof href === 'string' && href) {\n const limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href);\n let key = \"link[rel=\\\"\" + rel + \"\\\"][href=\\\"\" + limitedEscapedHref + \"\\\"]\";\n\n if (typeof crossOrigin === 'string') {\n key += \"[crossorigin=\\\"\" + crossOrigin + \"\\\"]\";\n }\n\n if (!preconnectsSet.has(key)) {\n preconnectsSet.add(key);\n const preconnectProps = {\n rel,\n crossOrigin,\n href\n };\n\n if (null === ownerDocument.querySelector(key)) {\n const instance = ownerDocument.createElement('link');\n setInitialProperties(instance, 'link', preconnectProps);\n markNodeAsHoistable(instance);\n ownerDocument.head.appendChild(instance);\n }\n }\n }\n}\n\nfunction prefetchDNS$1(href) {\n\n preconnectAs('dns-prefetch', href, null);\n}\n\nfunction preconnect$1(href, crossOrigin) {\n\n preconnectAs('preconnect', href, crossOrigin);\n}\n\nfunction preload$1(href, as, options) {\n\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (href && as && ownerDocument) {\n let preloadSelector = \"link[rel=\\\"preload\\\"][as=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(as) + \"\\\"]\";\n\n if (as === 'image') {\n if (options && options.imageSrcSet) {\n preloadSelector += \"[imagesrcset=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(options.imageSrcSet) + \"\\\"]\";\n\n if (typeof options.imageSizes === 'string') {\n preloadSelector += \"[imagesizes=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(options.imageSizes) + \"\\\"]\";\n }\n } else {\n preloadSelector += \"[href=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(href) + \"\\\"]\";\n }\n } else {\n preloadSelector += \"[href=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(href) + \"\\\"]\";\n } // Some preloads are keyed under their selector. This happens when the preload is for\n // an arbitrary type. Other preloads are keyed under the resource key they represent a preload for.\n // Here we figure out which key to use to determine if we have a preload already.\n\n\n let key = preloadSelector;\n\n switch (as) {\n case 'style':\n key = getStyleKey(href);\n break;\n\n case 'script':\n key = getScriptKey(href);\n break;\n }\n\n if (!preloadPropsMap.has(key)) {\n const preloadProps = assign({\n rel: 'preload',\n // There is a bug in Safari where imageSrcSet is not respected on preload links\n // so we omit the href here if we have imageSrcSet b/c safari will load the wrong image.\n // This harms older browers that do not support imageSrcSet by making their preloads not work\n // but this population is shrinking fast and is already small so we accept this tradeoff.\n href: as === 'image' && options && options.imageSrcSet ? undefined : href,\n as\n }, options);\n\n preloadPropsMap.set(key, preloadProps);\n\n if (null === ownerDocument.querySelector(preloadSelector)) {\n if (as === 'style' && ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) {\n // We already have a stylesheet for this key. We don't need to preload it.\n return;\n } else if (as === 'script' && ownerDocument.querySelector(getScriptSelectorFromKey(key))) {\n // We already have a stylesheet for this key. We don't need to preload it.\n return;\n }\n\n const instance = ownerDocument.createElement('link');\n setInitialProperties(instance, 'link', preloadProps);\n markNodeAsHoistable(instance);\n ownerDocument.head.appendChild(instance);\n }\n }\n }\n}\n\nfunction preloadModule$1(href, options) {\n\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (href) {\n const as = options && typeof options.as === 'string' ? options.as : 'script';\n const preloadSelector = \"link[rel=\\\"modulepreload\\\"][as=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(as) + \"\\\"][href=\\\"\" + escapeSelectorAttributeValueInsideDoubleQuotes(href) + \"\\\"]\"; // Some preloads are keyed under their selector. This happens when the preload is for\n // an arbitrary type. Other preloads are keyed under the resource key they represent a preload for.\n // Here we figure out which key to use to determine if we have a preload already.\n\n let key = preloadSelector;\n\n switch (as) {\n case 'audioworklet':\n case 'paintworklet':\n case 'serviceworker':\n case 'sharedworker':\n case 'worker':\n case 'script':\n {\n key = getScriptKey(href);\n break;\n }\n }\n\n if (!preloadPropsMap.has(key)) {\n const props = assign({\n rel: 'modulepreload',\n href\n }, options);\n\n preloadPropsMap.set(key, props);\n\n if (null === ownerDocument.querySelector(preloadSelector)) {\n switch (as) {\n case 'audioworklet':\n case 'paintworklet':\n case 'serviceworker':\n case 'sharedworker':\n case 'worker':\n case 'script':\n {\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key))) {\n return;\n }\n }\n }\n\n const instance = ownerDocument.createElement('link');\n setInitialProperties(instance, 'link', props);\n markNodeAsHoistable(instance);\n ownerDocument.head.appendChild(instance);\n }\n }\n }\n}\n\nfunction preinitStyle(href, precedence, options) {\n\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (href) {\n const styles = getResourcesFromRoot(ownerDocument).hoistableStyles;\n const key = getStyleKey(href);\n precedence = precedence || 'default'; // Check if this resource already exists\n\n let resource = styles.get(key);\n\n if (resource) {\n // We can early return. The resource exists and there is nothing\n // more to do\n return;\n }\n\n const state = {\n loading: NotLoaded,\n preload: null\n }; // Attempt to hydrate instance from DOM\n\n let instance = ownerDocument.querySelector(getStylesheetSelectorFromKey(key));\n\n if (instance) {\n state.loading = Loaded | Inserted;\n } else {\n // Construct a new instance and insert it\n const stylesheetProps = assign({\n rel: 'stylesheet',\n href,\n 'data-precedence': precedence\n }, options);\n\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps);\n }\n\n const link = instance = ownerDocument.createElement('link');\n markNodeAsHoistable(link);\n setInitialProperties(link, 'link', stylesheetProps);\n link._p = new Promise((resolve, reject) => {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener('load', () => {\n state.loading |= Loaded;\n });\n link.addEventListener('error', () => {\n state.loading |= Errored;\n });\n state.loading |= Inserted;\n insertStylesheet(instance, precedence, ownerDocument);\n } // Construct a Resource and cache it\n\n\n resource = {\n type: 'stylesheet',\n instance,\n count: 1,\n state\n };\n styles.set(key, resource);\n return;\n }\n}\n\nfunction preinitScript(src, options) {\n\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (src) {\n const scripts = getResourcesFromRoot(ownerDocument).hoistableScripts;\n const key = getScriptKey(src); // Check if this resource already exists\n\n let resource = scripts.get(key);\n\n if (resource) {\n // We can early return. The resource exists and there is nothing\n // more to do\n return;\n } // Attempt to hydrate instance from DOM\n\n\n let instance = ownerDocument.querySelector(getScriptSelectorFromKey(key));\n\n if (!instance) {\n // Construct a new instance and insert it\n const scriptProps = assign({\n src,\n async: true\n }, options); // Adopt certain preload props\n\n\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n adoptPreloadPropsForScript(scriptProps, preloadProps);\n }\n\n instance = ownerDocument.createElement('script');\n markNodeAsHoistable(instance);\n setInitialProperties(instance, 'link', scriptProps);\n ownerDocument.head.appendChild(instance);\n } // Construct a Resource and cache it\n\n\n resource = {\n type: 'script',\n instance,\n count: 1,\n state: null\n };\n scripts.set(key, resource);\n return;\n }\n}\n\nfunction preinitModuleScript(src, options) {\n\n const ownerDocument = getDocumentForImperativeFloatMethods();\n\n if (src) {\n const scripts = getResourcesFromRoot(ownerDocument).hoistableScripts;\n const key = getScriptKey(src); // Check if this resource already exists\n\n let resource = scripts.get(key);\n\n if (resource) {\n // We can early return. The resource exists and there is nothing\n // more to do\n return;\n } // Attempt to hydrate instance from DOM\n\n\n let instance = ownerDocument.querySelector(getScriptSelectorFromKey(key));\n\n if (!instance) {\n // Construct a new instance and insert it\n const scriptProps = assign({\n src,\n async: true,\n type: 'module'\n }, options); // Adopt certain preload props\n\n\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n adoptPreloadPropsForScript(scriptProps, preloadProps);\n }\n\n instance = ownerDocument.createElement('script');\n markNodeAsHoistable(instance);\n setInitialProperties(instance, 'link', scriptProps);\n ownerDocument.head.appendChild(instance);\n } // Construct a Resource and cache it\n\n\n resource = {\n type: 'script',\n instance,\n count: 1,\n state: null\n };\n scripts.set(key, resource);\n return;\n }\n} // This function is called in begin work and we should always have a currentDocument set\n\n\nfunction getResource(type, currentProps, pendingProps) {\n const resourceRoot = getCurrentResourceRoot();\n\n if (!resourceRoot) {\n throw Error(formatProdErrorMessage(446));\n }\n\n switch (type) {\n case 'meta':\n case 'title':\n {\n return null;\n }\n\n case 'style':\n {\n if (typeof pendingProps.precedence === 'string' && typeof pendingProps.href === 'string') {\n const key = getStyleKey(pendingProps.href);\n const styles = getResourcesFromRoot(resourceRoot).hoistableStyles;\n let resource = styles.get(key);\n\n if (!resource) {\n resource = {\n type: 'style',\n instance: null,\n count: 0,\n state: null\n };\n styles.set(key, resource);\n }\n\n return resource;\n }\n\n return {\n type: 'void',\n instance: null,\n count: 0,\n state: null\n };\n }\n\n case 'link':\n {\n if (pendingProps.rel === 'stylesheet' && typeof pendingProps.href === 'string' && typeof pendingProps.precedence === 'string') {\n const qualifiedProps = pendingProps;\n const key = getStyleKey(qualifiedProps.href);\n const styles = getResourcesFromRoot(resourceRoot).hoistableStyles;\n let resource = styles.get(key);\n\n if (!resource) {\n // We asserted this above but Flow can't figure out that the type satisfies\n const ownerDocument = getDocumentFromRoot(resourceRoot);\n resource = {\n type: 'stylesheet',\n instance: null,\n count: 0,\n state: {\n loading: NotLoaded,\n preload: null\n }\n };\n styles.set(key, resource);\n\n if (!preloadPropsMap.has(key)) {\n preloadStylesheet(ownerDocument, key, preloadPropsFromStylesheet(qualifiedProps), resource.state);\n }\n }\n\n return resource;\n }\n\n return null;\n }\n\n case 'script':\n {\n if (typeof pendingProps.src === 'string' && pendingProps.async === true) {\n const scriptProps = pendingProps;\n const key = getScriptKey(scriptProps.src);\n const scripts = getResourcesFromRoot(resourceRoot).hoistableScripts;\n let resource = scripts.get(key);\n\n if (!resource) {\n resource = {\n type: 'script',\n instance: null,\n count: 0,\n state: null\n };\n scripts.set(key, resource);\n }\n\n return resource;\n }\n\n return {\n type: 'void',\n instance: null,\n count: 0,\n state: null\n };\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(444, type));\n }\n }\n}\n\nfunction styleTagPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n 'data-href': rawProps.href,\n 'data-precedence': rawProps.precedence,\n href: null,\n precedence: null\n });\n}\n\nfunction getStyleKey(href) {\n const limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href);\n return \"href=\\\"\" + limitedEscapedHref + \"\\\"\";\n}\n\nfunction getStyleTagSelector(href) {\n const limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href);\n return \"style[data-href~=\\\"\" + limitedEscapedHref + \"\\\"]\";\n}\n\nfunction getStylesheetSelectorFromKey(key) {\n return \"link[rel=\\\"stylesheet\\\"][\" + key + \"]\";\n}\n\nfunction getPreloadStylesheetSelectorFromKey(key) {\n return \"link[rel=\\\"preload\\\"][as=\\\"style\\\"][\" + key + \"]\";\n}\n\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n 'data-precedence': rawProps.precedence,\n precedence: null\n });\n}\n\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n preloadPropsMap.set(key, preloadProps);\n\n if (!ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) {\n // There is no matching stylesheet instance in the Document.\n // We will insert a preload now to kick off loading because\n // we expect this stylesheet to commit\n const preloadEl = ownerDocument.querySelector(getPreloadStylesheetSelectorFromKey(key));\n\n if (preloadEl) {\n // If we find a preload already it was SSR'd and we won't have an actual\n // loading state to track. For now we will just assume it is loaded\n state.loading = Loaded;\n } else {\n const instance = ownerDocument.createElement('link');\n state.preload = instance;\n instance.addEventListener('load', () => state.loading |= Loaded);\n instance.addEventListener('error', () => state.loading |= Errored);\n setInitialProperties(instance, 'link', preloadProps);\n markNodeAsHoistable(instance);\n ownerDocument.head.appendChild(instance);\n }\n }\n}\n\nfunction preloadPropsFromStylesheet(props) {\n return {\n rel: 'preload',\n as: 'style',\n href: props.href,\n crossOrigin: props.crossOrigin,\n integrity: props.integrity,\n media: props.media,\n hrefLang: props.hrefLang,\n referrerPolicy: props.referrerPolicy\n };\n}\n\nfunction getScriptKey(src) {\n const limitedEscapedSrc = escapeSelectorAttributeValueInsideDoubleQuotes(src);\n return \"[src=\\\"\" + limitedEscapedSrc + \"\\\"]\";\n}\n\nfunction getScriptSelectorFromKey(key) {\n return 'script[async]' + key;\n}\n\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n\n if (resource.instance === null) {\n switch (resource.type) {\n case 'style':\n {\n const qualifiedProps = props; // Attempt to hydrate instance from DOM\n\n let instance = hoistableRoot.querySelector(getStyleTagSelector(qualifiedProps.href));\n\n if (instance) {\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return instance;\n }\n\n const styleProps = styleTagPropsFromRawProps(props);\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n instance = ownerDocument.createElement('style');\n markNodeAsHoistable(instance);\n setInitialProperties(instance, 'style', styleProps); // TODO: `style` does not have loading state for tracking insertions. I\n // guess because these aren't suspensey? Not sure whether this is a\n // factoring smell.\n // resource.state.loading |= Inserted;\n\n insertStylesheet(instance, qualifiedProps.precedence, hoistableRoot);\n resource.instance = instance;\n return instance;\n }\n\n case 'stylesheet':\n {\n // This typing is enforce by `getResource`. If we change the logic\n // there for what qualifies as a stylesheet resource we need to ensure\n // this cast still makes sense;\n const qualifiedProps = props;\n const key = getStyleKey(qualifiedProps.href); // Attempt to hydrate instance from DOM\n\n let instance = hoistableRoot.querySelector(getStylesheetSelectorFromKey(key));\n\n if (instance) {\n resource.state.loading |= Inserted;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return instance;\n }\n\n const stylesheetProps = stylesheetPropsFromRawProps(props);\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps);\n } // Construct and insert a new instance\n\n\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n instance = ownerDocument.createElement('link');\n markNodeAsHoistable(instance);\n const linkInstance = instance;\n linkInstance._p = new Promise((resolve, reject) => {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, 'link', stylesheetProps);\n resource.state.loading |= Inserted;\n insertStylesheet(instance, qualifiedProps.precedence, hoistableRoot);\n resource.instance = instance;\n return instance;\n }\n\n case 'script':\n {\n // This typing is enforce by `getResource`. If we change the logic\n // there for what qualifies as a stylesheet resource we need to ensure\n // this cast still makes sense;\n const borrowedScriptProps = props;\n const key = getScriptKey(borrowedScriptProps.src); // Attempt to hydrate instance from DOM\n\n let instance = hoistableRoot.querySelector(getScriptSelectorFromKey(key));\n\n if (instance) {\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return instance;\n }\n\n let scriptProps = borrowedScriptProps;\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n scriptProps = assign({}, borrowedScriptProps);\n adoptPreloadPropsForScript(scriptProps, preloadProps);\n } // Construct and insert a new instance\n\n\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n instance = ownerDocument.createElement('script');\n markNodeAsHoistable(instance);\n setInitialProperties(instance, 'link', scriptProps);\n ownerDocument.head.appendChild(instance);\n resource.instance = instance;\n return instance;\n }\n\n case 'void':\n {\n return null;\n }\n\n default:\n {\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n }\n } else {\n // In the case of stylesheets, they might have already been assigned an\n // instance during `suspendResource`. But that doesn't mean they were\n // inserted, because the commit might have been interrupted. So we need to\n // check now.\n //\n // The other resource types are unaffected because they are not\n // yet suspensey.\n //\n // TODO: This is a bit of a code smell. Consider refactoring how\n // `suspendResource` and `acquireResource` work together. The idea is that\n // `suspendResource` does all the same stuff as `acquireResource` except\n // for the insertion.\n if (resource.type === 'stylesheet' && (resource.state.loading & Inserted) === NotLoaded) {\n const qualifiedProps = props;\n const instance = resource.instance;\n resource.state.loading |= Inserted;\n insertStylesheet(instance, qualifiedProps.precedence, hoistableRoot);\n }\n }\n\n return resource.instance;\n}\nfunction releaseResource(resource) {\n resource.count--;\n}\n\nfunction insertStylesheet(instance, precedence, root) {\n const nodes = root.querySelectorAll('link[rel=\"stylesheet\"][data-precedence],style[data-precedence]');\n const last = nodes.length ? nodes[nodes.length - 1] : null;\n let prior = last;\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const nodePrecedence = node.dataset.precedence;\n\n if (nodePrecedence === precedence) {\n prior = node;\n } else if (prior !== last) {\n break;\n }\n }\n\n if (prior) {\n // We get the prior from the document so we know it is in the tree.\n // We also know that links can't be the topmost Node so the parentNode\n // must exist.\n prior.parentNode.insertBefore(instance, prior.nextSibling);\n } else {\n const parent = root.nodeType === DOCUMENT_NODE ? root.head : root;\n parent.insertBefore(instance, parent.firstChild);\n }\n}\n\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n if (stylesheetProps.crossOrigin == null) stylesheetProps.crossOrigin = preloadProps.crossOrigin;\n if (stylesheetProps.referrerPolicy == null) stylesheetProps.referrerPolicy = preloadProps.referrerPolicy;\n if (stylesheetProps.title == null) stylesheetProps.title = preloadProps.title;\n}\n\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n if (scriptProps.crossOrigin == null) scriptProps.crossOrigin = preloadProps.crossOrigin;\n if (scriptProps.referrerPolicy == null) scriptProps.referrerPolicy = preloadProps.referrerPolicy;\n if (scriptProps.integrity == null) scriptProps.integrity = preloadProps.integrity;\n}\n\nlet tagCaches = null;\nfunction hydrateHoistable(hoistableRoot, type, props, internalInstanceHandle) {\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n let instance = null;\n\n getInstance: switch (type) {\n case 'title':\n {\n instance = ownerDocument.getElementsByTagName('title')[0];\n\n if (!instance || isOwnedInstance(instance) || instance.namespaceURI === SVG_NAMESPACE || instance.hasAttribute('itemprop')) {\n instance = ownerDocument.createElement(type);\n ownerDocument.head.insertBefore(instance, ownerDocument.querySelector('head > title'));\n }\n\n setInitialProperties(instance, type, props);\n precacheFiberNode(internalInstanceHandle, instance);\n markNodeAsHoistable(instance);\n return instance;\n }\n\n case 'link':\n {\n const cache = getHydratableHoistableCache('link', 'href', ownerDocument);\n const key = type + (props.href || '');\n const maybeNodes = cache.get(key);\n\n if (maybeNodes) {\n const nodes = maybeNodes;\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node.getAttribute('href') !== (props.href == null ? null : props.href) || node.getAttribute('rel') !== (props.rel == null ? null : props.rel) || node.getAttribute('title') !== (props.title == null ? null : props.title) || node.getAttribute('crossorigin') !== (props.crossOrigin == null ? null : props.crossOrigin)) {\n // mismatch, try the next node;\n continue;\n }\n\n instance = node;\n nodes.splice(i, 1);\n break getInstance;\n }\n }\n\n instance = ownerDocument.createElement(type);\n setInitialProperties(instance, type, props);\n ownerDocument.head.appendChild(instance);\n break;\n }\n\n case 'meta':\n {\n const cache = getHydratableHoistableCache('meta', 'content', ownerDocument);\n const key = type + (props.content || '');\n const maybeNodes = cache.get(key);\n\n if (maybeNodes) {\n const nodes = maybeNodes;\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]; // We coerce content to string because it is the most likely one to\n\n if (node.getAttribute('content') !== (props.content == null ? null : '' + props.content) || node.getAttribute('name') !== (props.name == null ? null : props.name) || node.getAttribute('property') !== (props.property == null ? null : props.property) || node.getAttribute('http-equiv') !== (props.httpEquiv == null ? null : props.httpEquiv) || node.getAttribute('charset') !== (props.charSet == null ? null : props.charSet)) {\n // mismatch, try the next node;\n continue;\n }\n\n instance = node;\n nodes.splice(i, 1);\n break getInstance;\n }\n }\n\n instance = ownerDocument.createElement(type);\n setInitialProperties(instance, type, props);\n ownerDocument.head.appendChild(instance);\n break;\n }\n\n default:\n throw Error(formatProdErrorMessage(468, type));\n } // This node is a match\n\n\n precacheFiberNode(internalInstanceHandle, instance);\n markNodeAsHoistable(instance);\n return instance;\n}\n\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n let cache;\n let caches;\n\n if (tagCaches === null) {\n cache = new Map();\n caches = tagCaches = new Map();\n caches.set(ownerDocument, cache);\n } else {\n caches = tagCaches;\n const maybeCache = caches.get(ownerDocument);\n\n if (!maybeCache) {\n cache = new Map();\n caches.set(ownerDocument, cache);\n } else {\n cache = maybeCache;\n }\n }\n\n if (cache.has(type)) {\n // We use type as a special key that signals that this cache has been seeded for this type\n return cache;\n } // Mark this cache as seeded for this type\n\n\n cache.set(type, null);\n const nodes = ownerDocument.getElementsByTagName(type);\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (!isOwnedInstance(node) && (type !== 'link' || node.getAttribute('rel') !== 'stylesheet') && node.namespaceURI !== SVG_NAMESPACE) {\n const nodeKey = node.getAttribute(keyAttribute) || '';\n const key = type + nodeKey;\n const existing = cache.get(key);\n\n if (existing) {\n existing.push(node);\n } else {\n cache.set(key, [node]);\n }\n }\n }\n\n return cache;\n}\n\nfunction mountHoistable(hoistableRoot, type, instance) {\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n ownerDocument.head.insertBefore(instance, type === 'title' ? ownerDocument.querySelector('head > title') : null);\n}\nfunction unmountHoistable(instance) {\n instance.parentNode.removeChild(instance);\n}\nfunction isHostHoistableType(type, props, hostContext) {\n let hostContextProd;\n\n {\n hostContextProd = hostContext;\n } // Global opt out of hoisting for anything in SVG Namespace or anything with an itemProp inside an itemScope\n\n\n if (hostContextProd === HostContextNamespaceSvg || props.itemProp != null) {\n\n return false;\n }\n\n switch (type) {\n case 'meta':\n case 'title':\n {\n return true;\n }\n\n case 'style':\n {\n if (typeof props.precedence !== 'string' || typeof props.href !== 'string' || props.href === '') {\n\n return false;\n }\n\n return true;\n }\n\n case 'link':\n {\n if (typeof props.rel !== 'string' || typeof props.href !== 'string' || props.href === '' || props.onLoad || props.onError) {\n\n return false;\n }\n\n switch (props.rel) {\n case 'stylesheet':\n {\n const precedence = props.precedence,\n disabled = props.disabled;\n\n return typeof precedence === 'string' && disabled == null;\n }\n\n default:\n {\n return true;\n }\n }\n }\n\n case 'script':\n {\n if (props.async !== true || props.onLoad || props.onError || typeof props.src !== 'string' || !props.src) {\n\n return false;\n }\n\n return true;\n }\n\n case 'noscript':\n case 'template':\n {\n\n return false;\n }\n }\n\n return false;\n}\nfunction mayResourceSuspendCommit(resource) {\n return resource.type === 'stylesheet' && (resource.state.loading & Inserted) === NotLoaded;\n}\nfunction preloadInstance(type, props) {\n // Return true to indicate it's already loaded\n return true;\n}\nfunction preloadResource(resource) {\n if (resource.type === 'stylesheet' && (resource.state.loading & Settled) === NotLoaded) {\n // we have not finished loading the underlying stylesheet yet.\n return false;\n } // Return true to indicate it's already loaded\n\n\n return true;\n}\nlet suspendedState = null; // We use a noop function when we begin suspending because if possible we want the\n// waitfor step to finish synchronously. If it doesn't we'll return a function to\n// provide the actual unsuspend function and that will get completed when the count\n// hits zero or it will get cancelled if the root starts new work.\n\nfunction noop() {}\n\nfunction startSuspendingCommit() {\n suspendedState = {\n stylesheets: null,\n count: 0,\n unsuspend: noop\n };\n}\nfunction suspendResource(hoistableRoot, resource, props) {\n if (suspendedState === null) {\n throw Error(formatProdErrorMessage(475));\n }\n\n const state = suspendedState;\n\n if (resource.type === 'stylesheet') {\n if (typeof props.media === 'string') {\n // If we don't currently match media we avoid suspending on this resource\n // and let it insert on the mutation path\n if (matchMedia(props.media).matches === false) {\n return;\n }\n }\n\n if ((resource.state.loading & Inserted) === NotLoaded) {\n if (resource.instance === null) {\n const qualifiedProps = props;\n const key = getStyleKey(qualifiedProps.href); // Attempt to hydrate instance from DOM\n\n let instance = hoistableRoot.querySelector(getStylesheetSelectorFromKey(key));\n\n if (instance) {\n // If this instance has a loading state it came from the Fizz runtime.\n // If there is not loading state it is assumed to have been server rendered\n // as part of the preamble and therefore synchronously loaded. It could have\n // errored however which we still do not yet have a means to detect. For now\n // we assume it is loaded.\n const maybeLoadingState = instance._p;\n\n if (maybeLoadingState !== null && typeof maybeLoadingState === 'object' && // $FlowFixMe[method-unbinding]\n typeof maybeLoadingState.then === 'function') {\n const loadingState = maybeLoadingState;\n state.count++;\n const ping = onUnsuspend.bind(state);\n loadingState.then(ping, ping);\n }\n\n resource.state.loading |= Inserted;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n\n const ownerDocument = getDocumentFromRoot(hoistableRoot);\n const stylesheetProps = stylesheetPropsFromRawProps(props);\n const preloadProps = preloadPropsMap.get(key);\n\n if (preloadProps) {\n adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps);\n } // Construct and insert a new instance\n\n\n instance = ownerDocument.createElement('link');\n markNodeAsHoistable(instance);\n const linkInstance = instance; // This Promise is a loading state used by the Fizz runtime. We need this incase there is a race\n // between this resource being rendered on the client and being rendered with a late completed boundary.\n\n linkInstance._p = new Promise((resolve, reject) => {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, 'link', stylesheetProps);\n resource.instance = instance;\n }\n\n if (state.stylesheets === null) {\n state.stylesheets = new Map();\n }\n\n state.stylesheets.set(resource, hoistableRoot);\n const preloadEl = resource.state.preload;\n\n if (preloadEl && (resource.state.loading & Settled) === NotLoaded) {\n state.count++;\n const ping = onUnsuspend.bind(state);\n preloadEl.addEventListener('load', ping);\n preloadEl.addEventListener('error', ping);\n }\n }\n }\n}\nfunction waitForCommitToBeReady() {\n if (suspendedState === null) {\n throw Error(formatProdErrorMessage(475));\n }\n\n const state = suspendedState;\n\n if (state.stylesheets && state.count === 0) {\n // We are not currently blocked but we have not inserted all stylesheets.\n // If this insertion happens and loads or errors synchronously then we can\n // avoid suspending the commit. To do this we check the count again immediately after\n insertSuspendedStylesheets(state, state.stylesheets);\n } // We need to check the count again because the inserted stylesheets may have led to new\n // tasks to wait on.\n\n\n if (state.count > 0) {\n return commit => {\n // We almost never want to show content before its styles have loaded. But\n // eventually we will give up and allow unstyled content. So this number is\n // somewhat arbitrary — big enough that you'd only reach it under\n // extreme circumstances.\n // TODO: Figure out what the browser engines do during initial page load and\n // consider aligning our behavior with that.\n const stylesheetTimer = setTimeout(() => {\n if (state.stylesheets) {\n insertSuspendedStylesheets(state, state.stylesheets);\n }\n\n if (state.unsuspend) {\n const unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 60000); // one minute\n\n state.unsuspend = commit;\n return () => {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n };\n };\n }\n\n return null;\n}\n\nfunction onUnsuspend() {\n this.count--;\n\n if (this.count === 0) {\n if (this.stylesheets) {\n // If we haven't actually inserted the stylesheets yet we need to do so now before starting the commit.\n // The reason we do this after everything else has finished is because we want to have all the stylesheets\n // load synchronously right before mutating. Ideally the new styles will cause a single recalc only on the\n // new tree. When we filled up stylesheets we only inlcuded stylesheets with matching media attributes so we\n // wait for them to load before actually continuing. We expect this to increase the count above zero\n insertSuspendedStylesheets(this, this.stylesheets);\n } else if (this.unsuspend) {\n const unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n }\n} // We use a value that is type distinct from precedence to track which one is last.\n// This ensures there is no collision with user defined precedences. Normally we would\n// just track this in module scope but since the precedences are tracked per HoistableRoot\n// we need to associate it to something other than a global scope hence why we try to\n// colocate it with the map of precedences in the first place\n\n\nconst LAST_PRECEDENCE = null; // This is typecast to non-null because it will always be set before read.\n// it is important that this not be used except when the stack guarantees it exists.\n// Currentlyt his is only during insertSuspendedStylesheet.\n\nlet precedencesByRoot = null;\n\nfunction insertSuspendedStylesheets(state, resources) {\n // We need to clear this out so we don't try to reinsert after the stylesheets have loaded\n state.stylesheets = null;\n\n if (state.unsuspend === null) {\n // The suspended commit was cancelled. We don't need to insert any stylesheets.\n return;\n } // Temporarily increment count. we don't want any synchronously loaded stylesheets to try to unsuspend\n // before we finish inserting all stylesheets.\n\n\n state.count++;\n precedencesByRoot = new Map();\n resources.forEach(insertStylesheetIntoRoot, state);\n precedencesByRoot = null; // We can remove our temporary count and if we're still at zero we can unsuspend.\n // If we are in the synchronous phase before deciding if the commit should suspend and this\n // ends up hitting the unsuspend path it will just invoke the noop unsuspend.\n\n onUnsuspend.call(state);\n}\n\nfunction insertStylesheetIntoRoot(root, resource, map) {\n if (resource.state.loading & Inserted) {\n // This resource was inserted by another root committing. we don't need to insert it again\n return;\n }\n\n let last;\n let precedences = precedencesByRoot.get(root);\n\n if (!precedences) {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n const nodes = root.querySelectorAll('link[data-precedence],style[data-precedence]');\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node.nodeName === 'link' || // We omit style tags with media=\"not all\" because they are not in the right position\n // and will be hoisted by the Fizz runtime imminently.\n node.getAttribute('media') !== 'not all') {\n precedences.set(node.dataset.precedence, node);\n last = node;\n }\n }\n\n if (last) {\n precedences.set(LAST_PRECEDENCE, last);\n }\n } else {\n last = precedences.get(LAST_PRECEDENCE);\n } // We only call this after we have constructed an instance so we assume it here\n\n\n const instance = resource.instance; // We will always have a precedence for stylesheet instances\n\n const precedence = instance.getAttribute('data-precedence');\n const prior = precedences.get(precedence) || last;\n\n if (prior === last) {\n precedences.set(LAST_PRECEDENCE, instance);\n }\n\n precedences.set(precedence, instance);\n this.count++;\n const onComplete = onUnsuspend.bind(this);\n instance.addEventListener('load', onComplete);\n instance.addEventListener('error', onComplete);\n\n if (prior) {\n prior.parentNode.insertBefore(instance, prior.nextSibling);\n } else {\n const parent = root.nodeType === DOCUMENT_NODE ? root.head : root;\n parent.insertBefore(instance, parent.firstChild);\n }\n\n resource.state.loading |= Inserted;\n}\n\nconst NotPendingTransition = NotPending;\n\nconst Dispatcher$1 = Internals.Dispatcher;\n\nif (typeof document !== 'undefined') {\n // Set the default dispatcher to the client dispatcher\n Dispatcher$1.current = ReactDOMClientDispatcher;\n}\n/* global reportError */\n\nconst defaultOnRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n// emulating an uncaught JavaScript error.\nreportError : error => {\n // In older browsers and test environments, fallback to console.error.\n // eslint-disable-next-line react-internal/no-production-logging\n console['error'](error);\n}; // $FlowFixMe[missing-this-annot]\n\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n} // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = // $FlowFixMe[missing-this-annot]\nfunction (children) {\n const root = this._internalRoot;\n\n if (root === null) {\n throw Error(formatProdErrorMessage(409));\n }\n\n updateContainer(children, root, null, null);\n}; // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = // $FlowFixMe[missing-this-annot]\nfunction () {\n\n const root = this._internalRoot;\n\n if (root !== null) {\n this._internalRoot = null;\n const container = root.containerInfo;\n\n flushSync$1(() => {\n updateContainer(null, root, null, null);\n });\n unmarkContainerAsRoot(container);\n }\n};\n\nfunction createRoot$1(container, options) {\n if (!isValidContainer(container)) {\n throw Error(formatProdErrorMessage(299));\n }\n let isStrictMode = false;\n let concurrentUpdatesByDefaultOverride = false;\n let identifierPrefix = '';\n let onRecoverableError = defaultOnRecoverableError;\n let transitionCallbacks = null;\n\n if (options !== null && options !== undefined) {\n\n if (options.unstable_strictMode === true) {\n isStrictMode = true;\n }\n\n if (options.identifierPrefix !== undefined) {\n identifierPrefix = options.identifierPrefix;\n }\n\n if (options.onRecoverableError !== undefined) {\n onRecoverableError = options.onRecoverableError;\n }\n\n if (options.unstable_transitionCallbacks !== undefined) {\n transitionCallbacks = options.unstable_transitionCallbacks;\n }\n }\n\n const root = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks);\n markContainerAsRoot(root.current, container);\n Dispatcher$1.current = ReactDOMClientDispatcher;\n const rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n listenToAllSupportedEvents(rootContainerElement); // $FlowFixMe[invalid-constructor] Flow no longer supports calling new on functions\n\n return new ReactDOMRoot(root);\n} // $FlowFixMe[missing-this-annot]\n\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\n\nfunction scheduleHydration(target) {\n if (target) {\n queueExplicitHydrationTarget(target);\n }\n} // $FlowFixMe[prop-missing] found when upgrading Flow\n\n\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;\nfunction hydrateRoot$1(container, initialChildren, options) {\n if (!isValidContainer(container)) {\n throw Error(formatProdErrorMessage(405));\n }\n // the hydration callbacks.\n\n\n const hydrationCallbacks = options != null ? options : null;\n let isStrictMode = false;\n let concurrentUpdatesByDefaultOverride = false;\n let identifierPrefix = '';\n let onRecoverableError = defaultOnRecoverableError;\n let transitionCallbacks = null;\n let formState = null;\n\n if (options !== null && options !== undefined) {\n if (options.unstable_strictMode === true) {\n isStrictMode = true;\n }\n\n if (options.identifierPrefix !== undefined) {\n identifierPrefix = options.identifierPrefix;\n }\n\n if (options.onRecoverableError !== undefined) {\n onRecoverableError = options.onRecoverableError;\n }\n\n if (options.unstable_transitionCallbacks !== undefined) {\n transitionCallbacks = options.unstable_transitionCallbacks;\n }\n\n {\n if (options.formState !== undefined) {\n formState = options.formState;\n }\n }\n }\n\n const root = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks, formState);\n markContainerAsRoot(root.current, container);\n Dispatcher$1.current = ReactDOMClientDispatcher; // This can't be a comment node since hydration doesn't work on comment nodes anyway.\n\n listenToAllSupportedEvents(container); // $FlowFixMe[invalid-constructor] Flow no longer supports calling new on functions\n\n return new ReactDOMHydrationRoot(root);\n}\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers ));\n} // TODO: Remove this function which also includes comment nodes.\n// We only use it in places that are currently more relaxed.\n\nfunction isValidContainerLegacy(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction noopOnRecoverableError() {// This isn't reachable because onRecoverableError isn't called in the\n // legacy API.\n}\n\nfunction legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {\n if (isHydrationContainer) {\n if (typeof callback === 'function') {\n const originalCallback = callback;\n\n callback = function () {\n const instance = getPublicRootInstance(root);\n originalCallback.call(instance);\n };\n }\n\n const root = createHydrationContainer(initialChildren, callback, container, LegacyRoot, null, // hydrationCallbacks\n false, // isStrictMode\n false, // concurrentUpdatesByDefaultOverride,\n '', // identifierPrefix\n noopOnRecoverableError, // TODO(luna) Support hydration later\n null, null);\n container._reactRootContainer = root;\n markContainerAsRoot(root.current, container);\n const rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container; // $FlowFixMe[incompatible-call]\n\n listenToAllSupportedEvents(rootContainerElement);\n flushSync$1();\n return root;\n } else {\n // First clear any existing content.\n clearContainer(container);\n\n if (typeof callback === 'function') {\n const originalCallback = callback;\n\n callback = function () {\n const instance = getPublicRootInstance(root);\n originalCallback.call(instance);\n };\n }\n\n const root = createContainer(container, LegacyRoot, null, // hydrationCallbacks\n false, // isStrictMode\n false, // concurrentUpdatesByDefaultOverride,\n '', // identifierPrefix\n noopOnRecoverableError, // onRecoverableError\n null // transitionCallbacks\n );\n container._reactRootContainer = root;\n markContainerAsRoot(root.current, container);\n const rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container; // $FlowFixMe[incompatible-call]\n\n listenToAllSupportedEvents(rootContainerElement); // Initial mount should not be batched.\n\n flushSync$1(() => {\n updateContainer(initialChildren, root, parentComponent, callback);\n });\n return root;\n }\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n\n const maybeRoot = container._reactRootContainer;\n let root;\n\n if (!maybeRoot) {\n // Initial mount\n root = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);\n } else {\n root = maybeRoot;\n\n if (typeof callback === 'function') {\n const originalCallback = callback;\n\n callback = function () {\n const instance = getPublicRootInstance(root);\n originalCallback.call(instance);\n };\n } // Update\n\n\n updateContainer(children, root, parentComponent, callback);\n }\n\n return getPublicRootInstance(root);\n}\n\nfunction findDOMNode(componentOrElement) {\n\n if (componentOrElement == null) {\n return null;\n }\n\n if (componentOrElement.nodeType === ELEMENT_NODE) {\n return componentOrElement;\n }\n\n return findHostInstance(componentOrElement);\n}\nfunction hydrate(element, container, callback) {\n\n if (!isValidContainerLegacy(container)) {\n throw Error(formatProdErrorMessage(200));\n }\n\n\n return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n}\nfunction render(element, container, callback) {\n\n if (!isValidContainerLegacy(container)) {\n throw Error(formatProdErrorMessage(200));\n }\n\n return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n}\nfunction unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n\n if (!isValidContainerLegacy(containerNode)) {\n throw Error(formatProdErrorMessage(200));\n }\n\n if (parentComponent == null || !has(parentComponent)) {\n throw Error(formatProdErrorMessage(38));\n }\n\n return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n}\nfunction unmountComponentAtNode(container) {\n if (!isValidContainerLegacy(container)) {\n throw Error(formatProdErrorMessage(40));\n }\n\n if (container._reactRootContainer) {\n\n\n flushSync$1(() => {\n legacyRenderSubtreeIntoContainer(null, null, container, false, () => {\n // $FlowFixMe[incompatible-type] This should probably use `delete container._reactRootContainer`\n container._reactRootContainer = null;\n unmarkContainerAsRoot(container);\n });\n }); // If you call unmountComponentAtNode twice in quick succession, you'll\n // get `true` twice. That's probably fine?\n\n return true;\n } else {\n\n return false;\n }\n}\n\nfunction getCrossOriginString(input) {\n if (typeof input === 'string') {\n return input === 'use-credentials' ? input : '';\n }\n\n return undefined;\n}\nfunction getCrossOriginStringAs(as, input) {\n if (as === 'font') {\n return '';\n }\n\n if (typeof input === 'string') {\n return input === 'use-credentials' ? input : '';\n }\n\n return undefined;\n}\n\nconst Dispatcher = Internals.Dispatcher;\nfunction prefetchDNS(href) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string') {\n dispatcher.prefetchDNS(href);\n } // We don't error because preconnect needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\nfunction preconnect(href, options) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string') {\n const crossOrigin = options ? getCrossOriginString(options.crossOrigin) : null;\n dispatcher.preconnect(href, crossOrigin);\n } // We don't error because preconnect needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\nfunction preload(href, options) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string' && // We check existence because we cannot enforce this function is actually called with the stated type\n typeof options === 'object' && options !== null && typeof options.as === 'string') {\n const as = options.as;\n const crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n dispatcher.preload(href, as, {\n crossOrigin,\n integrity: typeof options.integrity === 'string' ? options.integrity : undefined,\n nonce: typeof options.nonce === 'string' ? options.nonce : undefined,\n type: typeof options.type === 'string' ? options.type : undefined,\n fetchPriority: typeof options.fetchPriority === 'string' ? options.fetchPriority : undefined,\n referrerPolicy: typeof options.referrerPolicy === 'string' ? options.referrerPolicy : undefined,\n imageSrcSet: typeof options.imageSrcSet === 'string' ? options.imageSrcSet : undefined,\n imageSizes: typeof options.imageSizes === 'string' ? options.imageSizes : undefined\n });\n } // We don't error because preload needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\nfunction preloadModule(href, options) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string') {\n if (options) {\n const crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n dispatcher.preloadModule(href, {\n as: typeof options.as === 'string' && options.as !== 'script' ? options.as : undefined,\n crossOrigin,\n integrity: typeof options.integrity === 'string' ? options.integrity : undefined\n });\n } else {\n dispatcher.preloadModule(href);\n }\n } // We don't error because preload needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\nfunction preinit(href, options) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string' && options && typeof options.as === 'string') {\n const as = options.as;\n const crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n const integrity = typeof options.integrity === 'string' ? options.integrity : undefined;\n const fetchPriority = typeof options.fetchPriority === 'string' ? options.fetchPriority : undefined;\n\n if (as === 'style') {\n dispatcher.preinitStyle(href, typeof options.precedence === 'string' ? options.precedence : undefined, {\n crossOrigin,\n integrity,\n fetchPriority\n });\n } else if (as === 'script') {\n dispatcher.preinitScript(href, {\n crossOrigin,\n integrity,\n fetchPriority,\n nonce: typeof options.nonce === 'string' ? options.nonce : undefined\n });\n }\n } // We don't error because preinit needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\nfunction preinitModule(href, options) {\n\n const dispatcher = Dispatcher.current;\n\n if (dispatcher && typeof href === 'string') {\n if (typeof options === 'object' && options !== null) {\n if (options.as == null || options.as === 'script') {\n const crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n dispatcher.preinitModuleScript(href, {\n crossOrigin,\n integrity: typeof options.integrity === 'string' ? options.integrity : undefined,\n nonce: typeof options.nonce === 'string' ? options.nonce : undefined\n });\n }\n } else if (options == null) {\n dispatcher.preinitModuleScript(href);\n }\n } // We don't error because preinit needs to be resilient to being called in a variety of scopes\n // and the runtime may not be capable of responding. The function is optimistic and not critical\n // so we favor silent bailout over warning or erroring.\n\n}\n\nfunction createPortal(children, container) {\n let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isValidContainer(container)) {\n throw Error(formatProdErrorMessage(200));\n } // TODO: pass ReactDOM portal implementation as third argument\n // $FlowFixMe[incompatible-return] The Flow type is opaque but there's no way to actually create it.\n\n\n return createPortal$1(children, container, null, key);\n}\n\nfunction renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n}\n\nfunction createRoot(container, options) {\n\n return createRoot$1(container, options);\n}\n\nfunction hydrateRoot(container, initialChildren, options) {\n\n return hydrateRoot$1(container, initialChildren, options);\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n// eslint-disable-next-line no-redeclare\n// eslint-disable-next-line no-redeclare\n\n\nfunction flushSync(fn) {\n\n return flushSync$1(fn);\n}\n// This is an array for better minification.\n\nInternals.Events = [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1];\ninjectIntoDevTools({\n findFiberByHostInstance: getClosestInstanceFromNode,\n bundleType: 0,\n version: ReactVersion,\n rendererPackageName: 'react-dom'\n});\n\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\nexports.createPortal = createPortal;\nexports.createRoot = createRoot;\nexports.findDOMNode = findDOMNode;\nexports.flushSync = flushSync;\nexports.hydrate = hydrate;\nexports.hydrateRoot = hydrateRoot;\nexports.preconnect = preconnect;\nexports.prefetchDNS = prefetchDNS;\nexports.preinit = preinit;\nexports.preinitModule = preinitModule;\nexports.preload = preload;\nexports.preloadModule = preloadModule;\nexports.render = render;\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unstable_batchedUpdates = batchedUpdates$1;\nexports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\nexports.useFormState = useFormState;\nexports.useFormStatus = useFormStatus;\nexports.version = ReactVersion;","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function (c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function (c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export var IconsManifest = [\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n }\n]","import React from 'react';\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\n\nexport function GenIcon(data) {\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + ' ' : '') + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\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","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n\n function FocusManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onFocus) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = FocusManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this2.setFocused(focused);\n } else {\n _this2.onFocus();\n }\n });\n };\n\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n };\n\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n\n return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","// TYPES\n// FUNCTIONS\nvar logger = console;\nexport function getLogger() {\n return logger;\n}\nexport function setLogger(newLogger) {\n logger = newLogger;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n function Mutation(config) {\n this.options = _extends({}, config.defaultOptions, config.options);\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.meta = config.meta;\n }\n\n var _proto = Mutation.prototype;\n\n _proto.setState = function setState(state) {\n this.dispatch({\n type: 'setState',\n state: state\n });\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n };\n\n _proto.cancel = function cancel() {\n if (this.retryer) {\n this.retryer.cancel();\n return this.retryer.promise.then(noop).catch(noop);\n }\n\n return Promise.resolve();\n };\n\n _proto.continue = function _continue() {\n if (this.retryer) {\n this.retryer.continue();\n return this.retryer.promise;\n }\n\n return this.execute();\n };\n\n _proto.execute = function execute() {\n var _this = this;\n\n var data;\n var restored = this.state.status === 'loading';\n var promise = Promise.resolve();\n\n if (!restored) {\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n });\n promise = promise.then(function () {\n // Notify cache callback\n _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);\n }).then(function () {\n return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n }).then(function (context) {\n if (context !== _this.state.context) {\n _this.dispatch({\n type: 'loading',\n context: context,\n variables: _this.state.variables\n });\n }\n });\n }\n\n return promise.then(function () {\n return _this.executeMutation();\n }).then(function (result) {\n data = result; // Notify cache callback\n\n _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);\n }).then(function () {\n return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'success',\n data: data\n });\n\n return data;\n }).catch(function (error) {\n // Notify cache callback\n _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error\n\n getLogger().error(error);\n return Promise.resolve().then(function () {\n return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'error',\n error: error\n });\n\n throw error;\n });\n });\n };\n\n _proto.executeMutation = function executeMutation() {\n var _this2 = this,\n _this$options$retry;\n\n this.retryer = new Retryer({\n fn: function fn() {\n if (!_this2.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return _this2.options.mutationFn(_this2.state.variables);\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay\n });\n return this.retryer.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onMutationUpdate(action);\n });\n\n _this3.mutationCache.notify(_this3);\n });\n };\n\n return Mutation;\n}();\nexport function getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'loading':\n return _extends({}, state, {\n context: action.context,\n data: undefined,\n error: null,\n isPaused: false,\n status: 'loading',\n variables: action.variables\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false\n });\n\n case 'error':\n return _extends({}, state, {\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error'\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n\n this.notifyFn = function (callback) {\n callback();\n };\n\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n\n var _proto = NotifyManager.prototype;\n\n _proto.batch = function batch(callback) {\n var result;\n this.transactions++;\n\n try {\n result = callback();\n } finally {\n this.transactions--;\n\n if (!this.transactions) {\n this.flush();\n }\n }\n\n return result;\n };\n\n _proto.schedule = function schedule(callback) {\n var _this = this;\n\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */\n ;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n\n _proto.flush = function flush() {\n var _this3 = this;\n\n var queue = this.queue;\n this.queue = [];\n\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n ;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n ;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n\n return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var OnlineManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(OnlineManager, _Subscribable);\n\n function OnlineManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onOnline) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onOnline();\n }; // Listen to online\n\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = OnlineManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (online) {\n if (typeof online === 'boolean') {\n _this2.setOnline(online);\n } else {\n _this2.onOnline();\n }\n });\n };\n\n _proto.setOnline = function setOnline(online) {\n this.online = online;\n\n if (online) {\n this.onOnline();\n }\n };\n\n _proto.onOnline = function onOnline() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isOnline = function isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n };\n\n return OnlineManager;\n}(Subscribable);\nexport var onlineManager = new OnlineManager();","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { getLogger } from './logger';\nimport { Retryer, isCancelledError } from './retryer'; // TYPES\n\n// CLASS\nexport var Query = /*#__PURE__*/function () {\n function Query(config) {\n this.abortSignalConsumed = false;\n this.hadObservers = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || this.getDefaultState(this.options);\n this.state = this.initialState;\n this.meta = config.meta;\n this.scheduleGc();\n }\n\n var _proto = Query.prototype;\n\n _proto.setOptions = function setOptions(options) {\n var _this$options$cacheTi;\n\n this.options = _extends({}, this.defaultOptions, options);\n this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set\n\n this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.scheduleGc = function scheduleGc() {\n var _this = this;\n\n this.clearGcTimeout();\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(function () {\n _this.optionalRemove();\n }, this.cacheTime);\n }\n };\n\n _proto.clearGcTimeout = function clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n };\n\n _proto.optionalRemove = function optionalRemove() {\n if (!this.observers.length) {\n if (this.state.isFetching) {\n if (this.hadObservers) {\n this.scheduleGc();\n }\n } else {\n this.cache.remove(this);\n }\n }\n };\n\n _proto.setData = function setData(updater, options) {\n var _this$options$isDataE, _this$options;\n\n var prevData = this.state.data; // Get the new data\n\n var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`\n\n if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {\n data = prevData;\n } else if (this.options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n data = replaceEqualDeep(prevData, data);\n } // Set data and mark it as cached\n\n\n this.dispatch({\n data: data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt\n });\n return data;\n };\n\n _proto.setState = function setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state: state,\n setStateOptions: setStateOptions\n });\n };\n\n _proto.cancel = function cancel(options) {\n var _this$retryer;\n\n var promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n };\n\n _proto.destroy = function destroy() {\n this.clearGcTimeout();\n this.cancel({\n silent: true\n });\n };\n\n _proto.reset = function reset() {\n this.destroy();\n this.setState(this.initialState);\n };\n\n _proto.isActive = function isActive() {\n return this.observers.some(function (observer) {\n return observer.options.enabled !== false;\n });\n };\n\n _proto.isFetching = function isFetching() {\n return this.state.isFetching;\n };\n\n _proto.isStale = function isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {\n return observer.getCurrentResult().isStale;\n });\n };\n\n _proto.isStaleByTime = function isStaleByTime(staleTime) {\n if (staleTime === void 0) {\n staleTime = 0;\n }\n\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n };\n\n _proto.onFocus = function onFocus() {\n var _this$retryer2;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnWindowFocus();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n };\n\n _proto.onOnline = function onOnline() {\n var _this$retryer3;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnReconnect();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n this.hadObservers = true; // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n if (this.cacheTime) {\n this.scheduleGc();\n } else {\n this.cache.remove(this);\n }\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.getObserversCount = function getObserversCount() {\n return this.observers.length;\n };\n\n _proto.invalidate = function invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n };\n\n _proto.fetch = function fetch(options, fetchOptions) {\n var _this2 = this,\n _this$options$behavio,\n _context$fetchOptions,\n _abortController$abor;\n\n if (this.state.isFetching) {\n if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n var observer = this.observers.find(function (x) {\n return x.options.queryFn;\n });\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n var queryKey = ensureQueryKeyArray(this.queryKey);\n var abortController = getAbortController(); // Create query function context\n\n var queryFnContext = {\n queryKey: queryKey,\n pageParam: undefined,\n meta: this.meta\n };\n Object.defineProperty(queryFnContext, 'signal', {\n enumerable: true,\n get: function get() {\n if (abortController) {\n _this2.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n }); // Create fetch function\n\n var fetchFn = function fetchFn() {\n if (!_this2.options.queryFn) {\n return Promise.reject('Missing queryFn');\n }\n\n _this2.abortSignalConsumed = false;\n return _this2.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n var context = {\n fetchOptions: fetchOptions,\n options: this.options,\n queryKey: queryKey,\n state: this.state,\n fetchFn: fetchFn,\n meta: this.meta\n };\n\n if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {\n var _this$options$behavio2;\n\n (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);\n } // Store state in case the current fetch needs to be reverted\n\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n } // Try to fetch the data\n\n\n this.retryer = new Retryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),\n onSuccess: function onSuccess(data) {\n _this2.setData(data); // Notify cache callback\n\n\n _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onError: function onError(error) {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n _this2.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error\n\n getLogger().error(error);\n } // Remove query after fetching if cache time is 0\n\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay\n });\n this.promise = this.retryer.promise;\n return this.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = this.reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onQueryUpdate(action);\n });\n\n _this3.cache.notify({\n query: _this3,\n type: 'queryUpdated',\n action: action\n });\n });\n };\n\n _proto.getDefaultState = function getDefaultState(options) {\n var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n var hasInitialData = typeof options.initialData !== 'undefined';\n var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n var hasData = typeof data !== 'undefined';\n return {\n data: data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: hasData ? 'success' : 'idle'\n };\n };\n\n _proto.reducer = function reducer(state, action) {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n fetchFailureCount: state.fetchFailureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'fetch':\n return _extends({}, state, {\n fetchFailureCount: 0,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n isFetching: true,\n isPaused: false\n }, !state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n fetchFailureCount: 0,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: 'success'\n });\n\n case 'error':\n var error = action.error;\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return _extends({}, this.revertState);\n }\n\n return _extends({}, state, {\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isFetching: false,\n isPaused: false,\n status: 'error'\n });\n\n case 'invalidate':\n return _extends({}, state, {\n isInvalidated: true\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n };\n\n return Query;\n}();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';\nimport { Query } from './query';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var QueryCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryCache, _Subscribable);\n\n function QueryCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.queries = [];\n _this.queriesMap = {};\n return _this;\n }\n\n var _proto = QueryCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var _options$queryHash;\n\n var queryKey = options.queryKey;\n var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n var query = this.get(queryHash);\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey: queryKey,\n queryHash: queryHash,\n options: client.defaultQueryOptions(options),\n state: state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta\n });\n this.add(query);\n }\n\n return query;\n };\n\n _proto.add = function add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'queryAdded',\n query: query\n });\n }\n };\n\n _proto.remove = function remove(query) {\n var queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(function (x) {\n return x !== query;\n });\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'queryRemoved',\n query: query\n });\n }\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.queries.forEach(function (query) {\n _this2.remove(query);\n });\n });\n };\n\n _proto.get = function get(queryHash) {\n return this.queriesMap[queryHash];\n };\n\n _proto.getAll = function getAll() {\n return this.queries;\n };\n\n _proto.find = function find(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(function (query) {\n return matchQuery(filters, query);\n });\n };\n\n _proto.findAll = function findAll(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {\n return matchQuery(filters, query);\n }) : this.queries;\n };\n\n _proto.notify = function notify(event) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(event);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n var _this4 = this;\n\n notifyManager.batch(function () {\n _this4.queries.forEach(function (query) {\n query.onFocus();\n });\n });\n };\n\n _proto.onOnline = function onOnline() {\n var _this5 = this;\n\n notifyManager.batch(function () {\n _this5.queries.forEach(function (query) {\n query.onOnline();\n });\n });\n };\n\n return QueryCache;\n}(Subscribable);","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { notifyManager } from './notifyManager';\nimport { Mutation } from './mutation';\nimport { matchMutation, noop } from './utils';\nimport { Subscribable } from './subscribable'; // TYPES\n\n// CLASS\nexport var MutationCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationCache, _Subscribable);\n\n function MutationCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.mutations = [];\n _this.mutationId = 0;\n return _this;\n }\n\n var _proto = MutationCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state: state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,\n meta: options.meta\n });\n this.add(mutation);\n return mutation;\n };\n\n _proto.add = function add(mutation) {\n this.mutations.push(mutation);\n this.notify(mutation);\n };\n\n _proto.remove = function remove(mutation) {\n this.mutations = this.mutations.filter(function (x) {\n return x !== mutation;\n });\n mutation.cancel();\n this.notify(mutation);\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.mutations.forEach(function (mutation) {\n _this2.remove(mutation);\n });\n });\n };\n\n _proto.getAll = function getAll() {\n return this.mutations;\n };\n\n _proto.find = function find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.findAll = function findAll(filters) {\n return this.mutations.filter(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.notify = function notify(mutation) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(mutation);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n this.resumePausedMutations();\n };\n\n _proto.onOnline = function onOnline() {\n this.resumePausedMutations();\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n var pausedMutations = this.mutations.filter(function (x) {\n return x.state.isPaused;\n });\n return notifyManager.batch(function () {\n return pausedMutations.reduce(function (promise, mutation) {\n return promise.then(function () {\n return mutation.continue().catch(noop);\n });\n }, Promise.resolve());\n });\n };\n\n return MutationCache;\n}(Subscribable);","import { isCancelable } from './retryer';\nimport { getAbortController } from './utils';\nexport function infiniteQueryBehavior() {\n return {\n onFetch: function onFetch(context) {\n context.fetchFn = function () {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n var abortController = getAbortController();\n var abortSignal = abortController == null ? void 0 : abortController.signal;\n var newPageParams = oldPageParams;\n var cancelled = false; // Get query function\n\n var queryFn = context.options.queryFn || function () {\n return Promise.reject('Missing queryFn');\n };\n\n var buildNewPages = function buildNewPages(pages, param, page, previous) {\n newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);\n return previous ? [page].concat(pages) : [].concat(pages, [page]);\n }; // Create function to fetch a page\n\n\n var fetchPage = function fetchPage(pages, manual, param, previous) {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n var queryFnContext = {\n queryKey: context.queryKey,\n signal: abortSignal,\n pageParam: param,\n meta: context.meta\n };\n var queryFnResult = queryFn(queryFnContext);\n var promise = Promise.resolve(queryFnResult).then(function (page) {\n return buildNewPages(pages, param, page, previous);\n });\n\n if (isCancelable(queryFnResult)) {\n var promiseAsAny = promise;\n promiseAsAny.cancel = queryFnResult.cancel;\n }\n\n return promise;\n };\n\n var promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n var manual = typeof pageParam !== 'undefined';\n var param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n var _manual = typeof pageParam !== 'undefined';\n\n var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n\n promise = fetchPage(oldPages, _manual, _param, true);\n } // Refetch pages\n else {\n (function () {\n newPageParams = [];\n var manual = typeof context.options.getNextPageParam === 'undefined';\n var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n var _loop = function _loop(i) {\n promise = promise.then(function (pages) {\n var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n\n return fetchPage(pages, manual, _param2);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n };\n\n for (var i = 1; i < oldPages.length; i++) {\n _loop(i);\n }\n })();\n }\n\n var finalPromise = promise.then(function (pages) {\n return {\n pages: pages,\n pageParams: newPageParams\n };\n });\n var finalPromiseAsAny = finalPromise;\n\n finalPromiseAsAny.cancel = function () {\n cancelled = true;\n abortController == null ? void 0 : abortController.abort();\n\n if (isCancelable(promise)) {\n promise.cancel();\n }\n };\n\n return finalPromise;\n };\n }\n };\n}\nexport function getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nexport function getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n var nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n var previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';\nimport { QueryCache } from './queryCache';\nimport { MutationCache } from './mutationCache';\nimport { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { notifyManager } from './notifyManager';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior';\n// CLASS\nexport var QueryClient = /*#__PURE__*/function () {\n function QueryClient(config) {\n if (config === void 0) {\n config = {};\n }\n\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n }\n\n var _proto = QueryClient.prototype;\n\n _proto.mount = function mount() {\n var _this = this;\n\n this.unsubscribeFocus = focusManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onFocus();\n\n _this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onOnline();\n\n _this.queryCache.onOnline();\n }\n });\n };\n\n _proto.unmount = function unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n };\n\n _proto.isFetching = function isFetching(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n filters.fetching = true;\n return this.queryCache.findAll(filters).length;\n };\n\n _proto.isMutating = function isMutating(filters) {\n return this.mutationCache.findAll(_extends({}, filters, {\n fetching: true\n })).length;\n };\n\n _proto.getQueryData = function getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n };\n\n _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {\n var queryKey = _ref.queryKey,\n state = _ref.state;\n var data = state.data;\n return [queryKey, data];\n });\n };\n\n _proto.setQueryData = function setQueryData(queryKey, updater, options) {\n var parsedOptions = parseQueryArgs(queryKey);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(updater, options);\n };\n\n _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {\n var _this2 = this;\n\n return notifyManager.batch(function () {\n return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {\n var queryKey = _ref2.queryKey;\n return [queryKey, _this2.setQueryData(queryKey, updater, options)];\n });\n });\n };\n\n _proto.getQueryState = function getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n };\n\n _proto.removeQueries = function removeQueries(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n var queryCache = this.queryCache;\n notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n queryCache.remove(query);\n });\n });\n };\n\n _proto.resetQueries = function resetQueries(arg1, arg2, arg3) {\n var _this3 = this;\n\n var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs3[0],\n options = _parseFilterArgs3[1];\n\n var queryCache = this.queryCache;\n\n var refetchFilters = _extends({}, filters, {\n active: true\n });\n\n return notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n query.reset();\n });\n return _this3.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {\n var _this4 = this;\n\n var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs4[0],\n _parseFilterArgs4$ = _parseFilterArgs4[1],\n cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n var promises = notifyManager.batch(function () {\n return _this4.queryCache.findAll(filters).map(function (query) {\n return query.cancel(cancelOptions);\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {\n var _ref3,\n _filters$refetchActiv,\n _filters$refetchInact,\n _this5 = this;\n\n var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs5[0],\n options = _parseFilterArgs5[1];\n\n var refetchFilters = _extends({}, filters, {\n // if filters.refetchActive is not provided and filters.active is explicitly false,\n // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries\n active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,\n inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false\n });\n\n return notifyManager.batch(function () {\n _this5.queryCache.findAll(filters).forEach(function (query) {\n query.invalidate();\n });\n\n return _this5.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {\n var _this6 = this;\n\n var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs6[0],\n options = _parseFilterArgs6[1];\n\n var promises = notifyManager.batch(function () {\n return _this6.queryCache.findAll(filters).map(function (query) {\n return query.fetch(undefined, _extends({}, options, {\n meta: {\n refetchPage: filters == null ? void 0 : filters.refetchPage\n }\n }));\n });\n });\n var promise = Promise.all(promises).then(noop);\n\n if (!(options == null ? void 0 : options.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n };\n\n _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n var query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n };\n\n _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n };\n\n _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.cancelMutations = function cancelMutations() {\n var _this7 = this;\n\n var promises = notifyManager.batch(function () {\n return _this7.mutationCache.getAll().map(function (mutation) {\n return mutation.cancel();\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n return this.getMutationCache().resumePausedMutations();\n };\n\n _proto.executeMutation = function executeMutation(options) {\n return this.mutationCache.build(this, options).execute();\n };\n\n _proto.getQueryCache = function getQueryCache() {\n return this.queryCache;\n };\n\n _proto.getMutationCache = function getMutationCache() {\n return this.mutationCache;\n };\n\n _proto.getDefaultOptions = function getDefaultOptions() {\n return this.defaultOptions;\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {\n var result = this.queryDefaults.find(function (x) {\n return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey: queryKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getQueryDefaults = function getQueryDefaults(queryKey) {\n var _this$queryDefaults$f;\n\n return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {\n return partialMatchKey(queryKey, x.queryKey);\n })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;\n };\n\n _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {\n var result = this.mutationDefaults.find(function (x) {\n return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey: mutationKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getMutationDefaults = function getMutationDefaults(mutationKey) {\n var _this$mutationDefault;\n\n return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {\n return partialMatchKey(mutationKey, x.mutationKey);\n })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;\n };\n\n _proto.defaultQueryOptions = function defaultQueryOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {\n _defaulted: true\n });\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n }\n\n return defaultedOptions;\n };\n\n _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {\n return this.defaultQueryOptions(options);\n };\n\n _proto.defaultMutationOptions = function defaultMutationOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {\n _defaulted: true\n });\n };\n\n _proto.clear = function clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n };\n\n return QueryClient;\n}();","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils';\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\n\nexport function isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n var _this = this;\n\n var cancelRetry = false;\n var cancelFn;\n var continueFn;\n var promiseResolve;\n var promiseReject;\n this.abort = config.abort;\n\n this.cancel = function (cancelOptions) {\n return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n };\n\n this.cancelRetry = function () {\n cancelRetry = true;\n };\n\n this.continueRetry = function () {\n cancelRetry = false;\n };\n\n this.continue = function () {\n return continueFn == null ? void 0 : continueFn();\n };\n\n this.failureCount = 0;\n this.isPaused = false;\n this.isResolved = false;\n this.isTransportCancelable = false;\n this.promise = new Promise(function (outerResolve, outerReject) {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n var resolve = function resolve(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n var reject = function reject(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n var pause = function pause() {\n return new Promise(function (continueResolve) {\n continueFn = continueResolve;\n _this.isPaused = true;\n config.onPause == null ? void 0 : config.onPause();\n }).then(function () {\n continueFn = undefined;\n _this.isPaused = false;\n config.onContinue == null ? void 0 : config.onContinue();\n });\n }; // Create loop function\n\n\n var run = function run() {\n // Do nothing if already resolved\n if (_this.isResolved) {\n return;\n }\n\n var promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n } // Create callback to cancel this fetch\n\n\n cancelFn = function cancelFn(cancelOptions) {\n if (!_this.isResolved) {\n reject(new CancelledError(cancelOptions));\n _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported\n\n if (isCancelable(promiseOrValue)) {\n try {\n promiseOrValue.cancel();\n } catch (_unused) {}\n }\n }\n }; // Check if the transport layer support cancellation\n\n\n _this.isTransportCancelable = isCancelable(promiseOrValue);\n Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (_this.isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n\n if (cancelRetry || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n _this.failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(function () {\n if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n return pause();\n }\n }).then(function () {\n if (cancelRetry) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n run();\n};","export var Subscribable = /*#__PURE__*/function () {\n function Subscribable() {\n this.listeners = [];\n }\n\n var _proto = Subscribable.prototype;\n\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n\n var callback = listener || function () {\n return undefined;\n };\n\n this.listeners.push(callback);\n this.onSubscribe();\n return function () {\n _this.listeners = _this.listeners.filter(function (x) {\n return x !== callback;\n });\n\n _this.onUnsubscribe();\n };\n };\n\n _proto.hasListeners = function hasListeners() {\n return this.listeners.length > 0;\n };\n\n _proto.onSubscribe = function onSubscribe() {// Do nothing\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n };\n\n return Subscribable;\n}();","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n return undefined;\n}\nexport function functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n return array1.filter(function (x) {\n return array2.indexOf(x) === -1;\n });\n}\nexport function replaceAt(array, index, value) {\n var copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n queryKey: arg1,\n queryFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n queryKey: arg1\n });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n mutationKey: arg1,\n mutationFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n mutationKey: arg1\n });\n }\n\n if (typeof arg1 === 'function') {\n return _extends({}, arg2, {\n mutationFn: arg1\n });\n }\n\n return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [_extends({}, arg2, {\n queryKey: arg1\n }), arg3] : [arg1 || {}, arg2];\n}\nexport function parseMutationFilterArgs(arg1, arg2) {\n return isQueryKey(arg1) ? _extends({}, arg2, {\n mutationKey: arg1\n }) : arg1;\n}\nexport function mapQueryStatusFilter(active, inactive) {\n if (active === true && inactive === true || active == null && inactive == null) {\n return 'all';\n } else if (active === false && inactive === false) {\n return 'none';\n } else {\n // At this point, active|inactive can only be true|false or false|true\n // so, when only one value is provided, the missing one has to be the negated value\n var isActive = active != null ? active : !inactive;\n return isActive ? 'active' : 'inactive';\n }\n}\nexport function matchQuery(filters, query) {\n var active = filters.active,\n exact = filters.exact,\n fetching = filters.fetching,\n inactive = filters.inactive,\n predicate = filters.predicate,\n queryKey = filters.queryKey,\n stale = filters.stale;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n var queryStatusFilter = mapQueryStatusFilter(active, inactive);\n\n if (queryStatusFilter === 'none') {\n return false;\n } else if (queryStatusFilter !== 'all') {\n var isActive = query.isActive();\n\n if (queryStatusFilter === 'active' && !isActive) {\n return false;\n }\n\n if (queryStatusFilter === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nexport function matchMutation(filters, mutation) {\n var exact = filters.exact,\n fetching = filters.fetching,\n predicate = filters.predicate,\n mutationKey = filters.mutationKey;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n var asArray = ensureQueryKeyArray(queryKey);\n return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n return JSON.stringify(value, function (_, val) {\n return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n result[key] = val[key];\n return result;\n }, {}) : val;\n });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(function (key) {\n return !partialDeepEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n var array = Array.isArray(a) && Array.isArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n var ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n var prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport function isQueryKey(value) {\n return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n return value instanceof Error;\n}\nexport function sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}\nexport function getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n}","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\nsetLogger(logger);","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nexport var useQueryClient = function useQueryClient() {\n var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n var client = _ref.client,\n _ref$contextSharing = _ref.contextSharing,\n contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n children = _ref.children;\n React.useEffect(function () {\n client.mount();\n return function () {\n client.unmount();\n };\n }, [client]);\n var Context = getQueryClientContext(contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { getDefaultState } from './mutation';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var MutationObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationObserver, _Subscribable);\n\n function MutationObserver(client, options) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n\n _this.setOptions(options);\n\n _this.bindMethods();\n\n _this.updateResult();\n\n return _this;\n }\n\n var _proto = MutationObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n };\n\n _proto.setOptions = function setOptions(options) {\n this.options = this.client.defaultMutationOptions(options);\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n var _this$currentMutation;\n\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);\n }\n };\n\n _proto.onMutationUpdate = function onMutationUpdate(action) {\n this.updateResult(); // Determine which callbacks to trigger\n\n var notifyOptions = {\n listeners: true\n };\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error') {\n notifyOptions.onError = true;\n }\n\n this.notify(notifyOptions);\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.reset = function reset() {\n this.currentMutation = undefined;\n this.updateResult();\n this.notify({\n listeners: true\n });\n };\n\n _proto.mutate = function mutate(variables, options) {\n this.mutateOptions = options;\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, _extends({}, this.options, {\n variables: typeof variables !== 'undefined' ? variables : this.options.variables\n }));\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n };\n\n _proto.updateResult = function updateResult() {\n var state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n\n var result = _extends({}, state, {\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset\n });\n\n this.currentResult = result;\n };\n\n _proto.notify = function notify(options) {\n var _this2 = this;\n\n notifyManager.batch(function () {\n // First trigger the mutate callbacks\n if (_this2.mutateOptions) {\n if (options.onSuccess) {\n _this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context);\n } else if (options.onError) {\n _this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n }\n } // Then trigger the listeners\n\n\n if (options.listeners) {\n _this2.listeners.forEach(function (listener) {\n listener(_this2.currentResult);\n });\n }\n });\n };\n\n return MutationObserver;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { noop, parseMutationArgs } from '../core/utils';\nimport { MutationObserver } from '../core/mutationObserver';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils'; // HOOK\n\nexport function useMutation(arg1, arg2, arg3) {\n var mountedRef = React.useRef(false);\n\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n\n var options = parseMutationArgs(arg1, arg2, arg3);\n var queryClient = useQueryClient();\n var obsRef = React.useRef();\n\n if (!obsRef.current) {\n obsRef.current = new MutationObserver(queryClient, options);\n } else {\n obsRef.current.setOptions(options);\n }\n\n var currentResult = obsRef.current.getCurrentResult();\n React.useEffect(function () {\n mountedRef.current = true;\n var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n }));\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n var mutate = React.useCallback(function (variables, mutateOptions) {\n obsRef.current.mutate(variables, mutateOptions).catch(noop);\n }, []);\n\n if (currentResult.error && shouldThrowError(undefined, obsRef.current.options.useErrorBoundary, [currentResult.error])) {\n throw currentResult.error;\n }\n\n return _extends({}, currentResult, {\n mutate: mutate,\n mutateAsync: currentResult.mutate\n });\n}","export function shouldThrowError(suspense, _useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary.apply(void 0, params);\n } // Allow useErrorBoundary to override suspense's throwing behavior\n\n\n if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors\n\n return !!suspense;\n}","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\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 \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\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 <Redirect>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 <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\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 <Router history>\"\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 <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\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 \"<MemoryRouter> 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) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\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 `<Route${path ? ` path=\"${path}\"` : \"\"}>, 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 <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> 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) && children.length === 0) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\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 </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\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 <Route component> and <Route children> in the same route; <Route component> 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 <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> 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 '<Route> 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 <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, 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 <Router {...rest} history={history} staticContext={context} />;\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 \"<StaticRouter> 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 <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\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 <Route>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 </RouterContext.Consumer>\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 '<Switch> 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 '<Switch> 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 Context 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(Context).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(Context).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(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","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","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nconst REACT_ELEMENT_TYPE = Symbol.for('react.element');\nconst REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\n\nconst ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nconst ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n\nfunction hasValidRef(config) {\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n\n return config.key !== undefined;\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nfunction ReactElement(type, key, ref, self, source, owner, props) {\n const element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type,\n key,\n ref,\n props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n return element;\n}\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\n\nfunction jsx$1(type, config, maybeKey) {\n let propName; // Reserved names are extracted\n\n const props = {};\n let key = null;\n let ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && // Skip over reserved prop names\n propName !== 'key' && // TODO: `ref` will no longer be reserved in the next major\n propName !== 'ref') {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n const defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return ReactElement(type, key, ref, undefined, undefined, ReactCurrentOwner.current, props);\n}\n\nconst jsx = jsx$1; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nconst jsxs = jsx$1;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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';\n\nvar ReactVersion = '18.3.0-canary-a9cc32511-20240215';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nconst REACT_ELEMENT_TYPE = Symbol.for('react.element');\nconst REACT_PORTAL_TYPE = Symbol.for('react.portal');\nconst REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nconst REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nconst REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nconst REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext\nconst REACT_CONTEXT_TYPE = Symbol.for('react.context');\nconst REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nconst REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nconst REACT_MEMO_TYPE = Symbol.for('react.memo');\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy');\nconst MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nconst FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n const maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * This is the abstract API for an update queue.\n */\n\n\nconst ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n }\n};\n\nconst assign = Object.assign;\n\nconst emptyObject = {};\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nconst pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n const refObject = {\n current: null\n };\n\n return refObject;\n}\n\nconst isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nconst ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nfunction hasValidRef(config) {\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n\n return config.key !== undefined;\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nfunction ReactElement(type, key, ref, owner, props) {\n const element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n return element;\n}\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\n\nfunction createElement$1(type, config, children) {\n let propName; // Reserved names are extracted\n\n const props = {};\n let key = null;\n let ref = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n\n if (hasValidKey(config)) {\n\n key = '' + config.key;\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && // Skip over reserved prop names\n propName !== 'key' && // TODO: `ref` will no longer be reserved in the next major\n propName !== 'ref' && // ...and maybe these, too, though we currently rely on them for\n // warnings and debug information in dev. Need to decide if we're OK\n // with dropping them. In the jsx() runtime it's not an issue because\n // the data gets passed as separate arguments instead of props, but\n // it would be nice to stop relying on them entirely so we can drop\n // them from the internal Fiber field.\n propName !== '__self' && propName !== '__source') {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n const childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n const childArray = Array(childrenLength);\n\n for (let i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n const defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return ReactElement(type, key, ref, ReactCurrentOwner.current, props);\n}\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://reactjs.org/docs/react-api.html#createfactory\n */\n\nfunction createFactory$1(type) {\n const factory = createElement$1.bind(null, type); // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook: remove it\n\n factory.type = type;\n return factory;\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n const newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement$1(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n let propName; // Original props are copied\n\n const props = assign({}, element.props); // Reserved names are extracted\n\n let key = element.key;\n let ref = element.ref; // Owner will be preserved, unless ref is overridden\n\n let owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n let defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && // Skip over reserved prop names\n propName !== 'key' && // TODO: `ref` will no longer be reserved in the next major\n propName !== 'ref' && // ...and maybe these, too, though we currently rely on them for\n // warnings and debug information in dev. Need to decide if we're OK\n // with dropping them. In the jsx() runtime it's not an issue because\n // the data gets passed as separate arguments instead of props, but\n // it would be nice to stop relying on them entirely so we can drop\n // them from the internal Fiber field.\n propName !== '__self' && propName !== '__source') {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n const childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n const childArray = Array(childrenLength);\n\n for (let i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nconst ReactCurrentDispatcher = {\n current: null\n};\n\n/**\n * Keeps track of the current Cache dispatcher.\n */\nconst ReactCurrentCache = {\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nconst ReactCurrentBatchConfig = {\n transition: null\n};\n\nconst ReactSharedInternals = {\n ReactCurrentDispatcher,\n ReactCurrentCache,\n ReactCurrentBatchConfig,\n ReactCurrentOwner\n};\n\nconst createElement = createElement$1;\nconst cloneElement = cloneElement$1;\nconst createFactory = createFactory$1;\n\nconst SEPARATOR = '.';\nconst SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n const escapeRegex = /[=:]/g;\n const escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n const escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\nconst userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction noop$1() {}\n\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case 'fulfilled':\n {\n const fulfilledValue = thenable.value;\n return fulfilledValue;\n }\n\n case 'rejected':\n {\n const rejectedError = thenable.reason;\n throw rejectedError;\n }\n\n default:\n {\n if (typeof thenable.status === 'string') {\n // Only instrument the thenable if the status if not defined. If\n // it's defined, but an unknown value, assume it's been instrumented by\n // some custom userspace implementation. We treat it as \"pending\".\n // Attach a dummy listener, to ensure that any lazy initialization can\n // happen. Flight lazily parses JSON when the value is actually awaited.\n thenable.then(noop$1, noop$1);\n } else {\n // This is an uncached thenable that we haven't seen before.\n // TODO: Detect infinite ping loops caused by uncached promises.\n const pendingThenable = thenable;\n pendingThenable.status = 'pending';\n pendingThenable.then(fulfilledValue => {\n if (thenable.status === 'pending') {\n const fulfilledThenable = thenable;\n fulfilledThenable.status = 'fulfilled';\n fulfilledThenable.value = fulfilledValue;\n }\n }, error => {\n if (thenable.status === 'pending') {\n const rejectedThenable = thenable;\n rejectedThenable.status = 'rejected';\n rejectedThenable.reason = error;\n }\n });\n } // Check one more time in case the thenable resolved synchronously.\n\n\n switch (thenable.status) {\n case 'fulfilled':\n {\n const fulfilledThenable = thenable;\n return fulfilledThenable.value;\n }\n\n case 'rejected':\n {\n const rejectedThenable = thenable;\n const rejectedError = rejectedThenable.reason;\n throw rejectedError;\n }\n }\n }\n }\n\n throw thenable;\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n const type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n let invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n break;\n\n case REACT_LAZY_TYPE:\n const payload = children._payload;\n const init = children._init;\n return mapIntoArray(init(payload), array, escapedPrefix, nameSoFar, callback);\n }\n\n }\n }\n\n if (invokeCallback) {\n const child = children;\n let mappedChild = callback(child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n const childKey = nameSoFar === '' ? SEPARATOR + getElementKey(child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n let escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', c => c);\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe[incompatible-type] Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey( // $FlowFixMe[unsafe-addition]\n '' + mappedChild.key // eslint-disable-line react-internal/safe-string-coercion\n ) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n let child;\n let nextName;\n let subtreeCount = 0; // Count of children found in the current subtree.\n\n const nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n const iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n const iterableChildren = children;\n\n const iterator = iteratorFn.call(iterableChildren);\n let step;\n let ii = 0; // $FlowFixMe[incompatible-use] `iteratorFn` might return null according to typing.\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n if (typeof children.then === 'function') {\n return mapIntoArray(resolveThenable(children), array, escapedPrefix, nameSoFar, callback);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n const childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\n\n\nfunction mapChildren(children, func, context) {\n if (children == null) {\n // $FlowFixMe limitation refining abstract types in Flow\n return children;\n }\n\n const result = [];\n let count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n let n = 0;\n mapChildren(children, () => {\n n++; // Don't return anything\n });\n return n;\n}\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\n\n\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, // $FlowFixMe[missing-this-annot]\n function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, child => child) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n const context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null\n };\n\n {\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n\n {\n context.Consumer = context;\n }\n }\n\n return context;\n}\n\nconst Uninitialized = -1;\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n const ctor = payload._result;\n const thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(moduleObject => {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n const resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, error => {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n const rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n const pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n const moduleObject = payload._result;\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n const payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n const lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n\n const elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render\n };\n\n return elementType;\n}\n\nfunction memo(type, compare) {\n\n const elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type,\n compare: compare === undefined ? null : compare\n };\n\n return elementType;\n}\n\nconst UNTERMINATED = 0;\nconst TERMINATED = 1;\nconst ERRORED = 2;\n\nfunction createCacheRoot() {\n return new WeakMap();\n}\n\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n // status, represents whether the cached computation returned a value or threw an error\n v: undefined,\n // value, either the cached result or an error, depending on s\n o: null,\n // object cache, a WeakMap where non-primitive arguments are stored\n p: null // primitive cache, a regular Map where primitive arguments are stored.\n\n };\n}\n\nfunction cache$1(fn) {\n return function () {\n const dispatcher = ReactCurrentCache.current;\n\n if (!dispatcher) {\n // If there is no dispatcher, then we treat this as not being cached.\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n return fn.apply(null, arguments);\n }\n\n const fnMap = dispatcher.getCacheForType(createCacheRoot);\n const fnNode = fnMap.get(fn);\n let cacheNode;\n\n if (fnNode === undefined) {\n cacheNode = createCacheNode();\n fnMap.set(fn, cacheNode);\n } else {\n cacheNode = fnNode;\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n const arg = arguments[i];\n\n if (typeof arg === 'function' || typeof arg === 'object' && arg !== null) {\n // Objects go into a WeakMap\n let objectCache = cacheNode.o;\n\n if (objectCache === null) {\n cacheNode.o = objectCache = new WeakMap();\n }\n\n const objectNode = objectCache.get(arg);\n\n if (objectNode === undefined) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n // Primitives go into a regular Map\n let primitiveCache = cacheNode.p;\n\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = new Map();\n }\n\n const primitiveNode = primitiveCache.get(arg);\n\n if (primitiveNode === undefined) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n\n if (cacheNode.s === TERMINATED) {\n return cacheNode.v;\n }\n\n if (cacheNode.s === ERRORED) {\n throw cacheNode.v;\n }\n\n try {\n // $FlowFixMe[incompatible-call]: We don't want to use rest arguments since we transpile the code.\n const result = fn.apply(null, arguments);\n const terminatedNode = cacheNode;\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n } catch (error) {\n // We store the first error that's thrown and rethrow it.\n const erroredNode = cacheNode;\n erroredNode.s = ERRORED;\n erroredNode.v = error;\n throw error;\n }\n };\n}\n\nconst cache = cache$1;\n\nfunction resolveDispatcher() {\n const dispatcher = ReactCurrentDispatcher.current;\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n const dispatcher = resolveDispatcher();\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n}\nfunction useTransition() {\n const dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value, initialValue) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value, initialValue);\n}\nfunction useId() {\n const dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n const dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\nfunction useCacheRefresh() {\n const dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n\n return dispatcher.useCacheRefresh();\n}\nfunction use(usable) {\n const dispatcher = resolveDispatcher();\n return dispatcher.use(usable);\n}\nfunction useOptimistic(passthrough, reducer) {\n const dispatcher = resolveDispatcher(); // $FlowFixMe[not-a-function] This is unstable, thus optional\n\n return dispatcher.useOptimistic(passthrough, reducer);\n}\n\nfunction startTransition(scope, options) {\n const prevTransition = ReactCurrentBatchConfig.transition; // Each renderer registers a callback to receive the return value of\n // the scope function. This is used to implement async actions.\n\n const callbacks = new Set();\n const transition = {\n _callbacks: callbacks\n };\n ReactCurrentBatchConfig.transition = transition;\n const currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n try {\n const returnValue = scope();\n\n if (typeof returnValue === 'object' && returnValue !== null && typeof returnValue.then === 'function') {\n callbacks.forEach(callback => callback(currentTransition, returnValue));\n returnValue.then(noop, onError);\n }\n } catch (error) {\n onError(error);\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n }\n }\n}\n\nfunction noop() {} // Use reportError, if it exists. Otherwise console.error. This is the same as\n// the default for onRecoverableError.\n\n\nconst onError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n// emulating an uncaught JavaScript error.\nreportError : error => {\n // In older browsers and test environments, fallback to console.error.\n // eslint-disable-next-line react-internal/no-production-logging\n console['error'](error);\n};\n\nfunction act(callback) {\n {\n throw new Error('act(...) is not supported in production builds of React.');\n }\n}\n\nconst Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cache = cache;\nexports.cloneElement = cloneElement;\nexports.createContext = createContext;\nexports.createElement = createElement;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_useCacheRefresh = useCacheRefresh;\nexports.use = use;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useOptimistic = useOptimistic;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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';\n\nconst enableSchedulerDebugging = false;\nconst enableProfiling = false;\nconst frameYieldMs = 5;\nconst userBlockingPriorityTimeout = 250;\nconst normalPriorityTimeout = 5000;\nconst lowPriorityTimeout = 10000;\n\nfunction push(heap, node) {\n const index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n if (heap.length === 0) {\n return null;\n }\n\n const first = heap[0];\n const last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n}\n\nfunction siftUp(heap, node, i) {\n let index = i;\n\n while (index > 0) {\n const parentIndex = index - 1 >>> 1;\n const parent = heap[parentIndex];\n\n if (compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n let index = i;\n const length = heap.length;\n const halfLength = length >>> 1;\n\n while (index < halfLength) {\n const leftIndex = (index + 1) * 2 - 1;\n const left = heap[leftIndex];\n const rightIndex = leftIndex + 1;\n const right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (compare(left, node) < 0) {\n if (rightIndex < length && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (rightIndex < length && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n const diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nconst ImmediatePriority = 1;\nconst UserBlockingPriority = 2;\nconst NormalPriority = 3;\nconst LowPriority = 4;\nconst IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\nexports.unstable_now = void 0;\nconst hasPerformanceNow = // $FlowFixMe[method-unbinding]\ntypeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n const localPerformance = performance;\n\n exports.unstable_now = () => localPerformance.now();\n} else {\n const localDate = Date;\n const initialTime = localDate.now();\n\n exports.unstable_now = () => localDate.now() - initialTime;\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nconst localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nconst localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nconst localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\ntypeof navigator !== 'undefined' && // $FlowFixMe[prop-missing]\nnavigator.scheduling !== undefined && // $FlowFixMe[incompatible-type]\nnavigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n let timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback();\n } else {\n const firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(initialTime) {\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n const previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) ; else {\n // No catch in prod code path.\n return workLoop(initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n }\n}\n\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging )) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n } // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n\n const callback = currentTask.callback;\n\n if (typeof callback === 'function') {\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n currentTask.callback = null; // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n currentPriorityLevel = currentTask.priorityLevel; // $FlowFixMe[incompatible-use] found when upgrading Flow\n\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n const continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n // If a continuation is returned, immediately yield to the main thread\n // regardless of how much time is left in the current time slice.\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n currentTask.callback = continuationCallback;\n\n advanceTimers(currentTime);\n return true;\n } else {\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n\n advanceTimers(currentTime);\n }\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n const firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel; // $FlowFixMe[incompatible-return]\n // $FlowFixMe[missing-this-annot]\n\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n } else {\n startTime = currentTime;\n }\n\n var timeout;\n\n switch (priorityLevel) {\n case ImmediatePriority:\n // Times out immediately\n timeout = -1;\n break;\n\n case UserBlockingPriority:\n // Eventually times out\n timeout = userBlockingPriorityTimeout;\n break;\n\n case IdlePriority:\n // Never times out\n timeout = maxSigned31BitInt;\n break;\n\n case LowPriority:\n // Eventually times out\n timeout = lowPriorityTimeout;\n break;\n\n case NormalPriority:\n default:\n // Eventually times out\n timeout = normalPriorityTimeout;\n break;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback,\n priorityLevel,\n startTime,\n expirationTime,\n sortIndex: -1\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback();\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback();\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nlet isMessageLoopRunning = false;\nlet taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nlet frameInterval = frameYieldMs;\nlet startTime = -1;\n\nfunction shouldYieldToHost() {\n const timeElapsed = exports.unstable_now() - startTime;\n\n if (timeElapsed < frameInterval) {\n // The main thread has only been blocked for a really short amount of time;\n // smaller than a single frame. Don't yield yet.\n return false;\n } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n if (fps < 0 || fps > 125) {\n // Using console['error'] to evade Babel and ESLint\n console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n return;\n }\n\n if (fps > 0) {\n frameInterval = Math.floor(1000 / fps);\n } else {\n // reset the framerate\n frameInterval = frameYieldMs;\n }\n}\n\nconst performWorkUntilDeadline = () => {\n if (isMessageLoopRunning) {\n const currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n // has been blocked.\n\n startTime = currentTime; // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n //\n // Intentionally not using a try-catch, since that makes some debugging\n // techniques harder. Instead, if `flushWork` errors, then `hasMoreWork` will\n // remain true, and we'll continue the work loop.\n\n let hasMoreWork = true;\n\n try {\n hasMoreWork = flushWork(currentTime);\n } finally {\n if (hasMoreWork) {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n }\n }\n } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nlet schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n // Node.js and old IE.\n // There's a few reasons for why we prefer setImmediate.\n //\n // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n // (Even though this is a DOM fork of the Scheduler, you could get here\n // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n // https://github.com/facebook/react/issues/20756\n //\n // But also, it runs earlier which is the semantic we want.\n // If other browsers ever implement it, it's better to use it.\n // Although both of these would be inferior to native scheduling.\n schedulePerformWorkUntilDeadline = () => {\n localSetImmediate(performWorkUntilDeadline);\n };\n} else if (typeof MessageChannel !== 'undefined') {\n // DOM and Worker environments.\n // We prefer MessageChannel because of the 4ms setTimeout clamping.\n const channel = new MessageChannel();\n const port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n schedulePerformWorkUntilDeadline = () => {\n port.postMessage(null);\n };\n} else {\n // We should only fallback here in non-browser environments.\n schedulePerformWorkUntilDeadline = () => {\n // $FlowFixMe[not-a-function] nullable value\n localSetTimeout(performWorkUntilDeadline, 0);\n };\n}\n\nfunction requestHostCallback() {\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n}\n\nfunction requestHostTimeout(callback, ms) {\n // $FlowFixMe[not-a-function] nullable value\n taskTimeoutID = localSetTimeout(() => {\n callback(exports.unstable_now());\n }, ms);\n}\n\nfunction cancelHostTimeout() {\n // $FlowFixMe[not-a-function] nullable value\n localClearTimeout(taskTimeoutID);\n taskTimeoutID = -1;\n}\nconst unstable_Profiling = null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;","'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","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 throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\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\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","/**\n * Copyright (c) 2014-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\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\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}","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 _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}","/**\n * ClientResponseError is a custom Error class that is intended to wrap\n * and normalize any error thrown by `Client.send()`.\n */\nexport class ClientResponseError extends Error {\n url: string = \"\";\n status: number = 0;\n response: { [key: string]: any } = {};\n isAbort: boolean = false;\n originalError: any = null;\n\n constructor(errData?: any) {\n super(\"ClientResponseError\");\n\n // Set the prototype explicitly.\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, ClientResponseError.prototype);\n\n if (errData !== null && typeof errData === \"object\") {\n this.url = typeof errData.url === \"string\" ? errData.url : \"\";\n this.status = typeof errData.status === \"number\" ? errData.status : 0;\n this.isAbort = !!errData.isAbort;\n this.originalError = errData.originalError;\n\n if (errData.response !== null && typeof errData.response === \"object\") {\n this.response = errData.response;\n } else if (errData.data !== null && typeof errData.data === \"object\") {\n this.response = errData.data;\n } else {\n this.response = {};\n }\n }\n\n if (!this.originalError && !(errData instanceof ClientResponseError)) {\n this.originalError = errData;\n }\n\n if (typeof DOMException !== \"undefined\" && errData instanceof DOMException) {\n this.isAbort = true;\n }\n\n this.name = \"ClientResponseError \" + this.status;\n this.message = this.response?.message;\n if (!this.message) {\n if (this.isAbort) {\n this.message =\n \"The request was autocancelled. You can find more info in https://github.com/pocketbase/js-sdk#auto-cancellation.\";\n } else if (this.originalError?.cause?.message?.includes(\"ECONNREFUSED ::1\")) {\n this.message =\n \"Failed to connect to the PocketBase server. Try changing the SDK URL from localhost to 127.0.0.1 (https://github.com/pocketbase/js-sdk/issues/21).\";\n } else {\n this.message = \"Something went wrong while processing your request.\";\n }\n }\n }\n\n /**\n * Alias for `this.response` to preserve the backward compatibility.\n */\n get data() {\n return this.response;\n }\n\n /**\n * Make a POJO's copy of the current error class instance.\n * @see https://github.com/vuex-orm/vuex-orm/issues/255\n */\n toJSON() {\n return { ...this };\n }\n}\n","/**\n * -------------------------------------------------------------------\n * Simple cookie parse and serialize utilities mostly based on the\n * node module https://github.com/jshttp/cookie.\n * -------------------------------------------------------------------\n */\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nexport interface ParseOptions {\n decode?: (val: string) => string;\n}\n\n/**\n * Parses the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function cookieParse(str: string, options?: ParseOptions): { [key: string]: any } {\n const result: { [key: string]: any } = {};\n\n if (typeof str !== \"string\") {\n return result;\n }\n\n const opt = Object.assign({}, options || {});\n const decode = opt.decode || defaultDecode;\n\n let index = 0;\n while (index < str.length) {\n const eqIdx = str.indexOf(\"=\", index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(\";\", index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === result[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n result[key] = decode(val);\n } catch (_) {\n result[key] = val; // no decoding\n }\n }\n\n index = endIdx + 1;\n }\n\n return result;\n}\n\nexport interface SerializeOptions {\n encode?: (val: string | number | boolean) => string;\n maxAge?: number;\n domain?: string;\n path?: string;\n expires?: Date;\n httpOnly?: boolean;\n secure?: boolean;\n priority?: string;\n sameSite?: boolean | string;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * ```js\n * cookieSerialize('foo', 'bar', { httpOnly: true }) // \"foo=bar; httpOnly\"\n * ```\n */\nexport function cookieSerialize(\n name: string,\n val: string,\n options?: SerializeOptions,\n): string {\n const opt = Object.assign({}, options || {});\n const encode = opt.encode || defaultEncode;\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError(\"argument name is invalid\");\n }\n\n const value = encode(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError(\"argument val is invalid\");\n }\n\n let result = name + \"=\" + value;\n\n if (opt.maxAge != null) {\n const maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError(\"option maxAge is invalid\");\n }\n\n result += \"; Max-Age=\" + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError(\"option domain is invalid\");\n }\n\n result += \"; Domain=\" + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError(\"option path is invalid\");\n }\n\n result += \"; Path=\" + opt.path;\n }\n\n if (opt.expires) {\n if (!isDate(opt.expires) || isNaN(opt.expires.valueOf())) {\n throw new TypeError(\"option expires is invalid\");\n }\n\n result += \"; Expires=\" + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n result += \"; HttpOnly\";\n }\n\n if (opt.secure) {\n result += \"; Secure\";\n }\n\n if (opt.priority) {\n const priority =\n typeof opt.priority === \"string\" ? opt.priority.toLowerCase() : opt.priority;\n\n switch (priority) {\n case \"low\":\n result += \"; Priority=Low\";\n break;\n case \"medium\":\n result += \"; Priority=Medium\";\n break;\n case \"high\":\n result += \"; Priority=High\";\n break;\n default:\n throw new TypeError(\"option priority is invalid\");\n }\n }\n\n if (opt.sameSite) {\n const sameSite =\n typeof opt.sameSite === \"string\" ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n result += \"; SameSite=Strict\";\n break;\n case \"lax\":\n result += \"; SameSite=Lax\";\n break;\n case \"strict\":\n result += \"; SameSite=Strict\";\n break;\n case \"none\":\n result += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(\"option sameSite is invalid\");\n }\n }\n\n return result;\n}\n\n/**\n * Default URL-decode string value function.\n * Optimized to skip native call when no `%`.\n */\nfunction defaultDecode(val: string): string {\n return val.indexOf(\"%\") !== -1 ? decodeURIComponent(val) : val;\n}\n\n/**\n * Default URL-encode value function.\n */\nfunction defaultEncode(val: string | number | boolean): string {\n return encodeURIComponent(val);\n}\n\n/**\n * Determines if value is a Date.\n */\nfunction isDate(val: any): boolean {\n return Object.prototype.toString.call(val) === \"[object Date]\" || val instanceof Date;\n}\n","let atobPolyfill: Function;\nif (typeof atob === \"function\") {\n atobPolyfill = atob;\n} else {\n /**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n atobPolyfill = (input: any) => {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new Error(\n \"'atob' failed: The string to be decoded is not correctly encoded.\",\n );\n }\n\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? (bs as any) * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n\n return output;\n };\n}\n\n/**\n * Returns JWT token's payload data.\n */\nexport function getTokenPayload(token: string): { [key: string]: any } {\n if (token) {\n try {\n const encodedPayload = decodeURIComponent(\n atobPolyfill(token.split(\".\")[1])\n .split(\"\")\n .map(function (c: string) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\"),\n );\n\n return JSON.parse(encodedPayload) || {};\n } catch (e) {}\n }\n\n return {};\n}\n\n/**\n * Checks whether a JWT token is expired or not.\n * Tokens without `exp` payload key are considered valid.\n * Tokens with empty payload (eg. invalid token strings) are considered expired.\n *\n * @param token The token to check.\n * @param [expirationThreshold] Time in seconds that will be subtracted from the token `exp` property.\n */\nexport function isTokenExpired(token: string, expirationThreshold = 0): boolean {\n let payload = getTokenPayload(token);\n\n if (\n Object.keys(payload).length > 0 &&\n (!payload.exp || payload.exp - expirationThreshold > Date.now() / 1000)\n ) {\n return false;\n }\n\n return true;\n}\n","import { cookieParse, cookieSerialize, SerializeOptions } from \"@/stores/utils/cookie\";\nimport { isTokenExpired, getTokenPayload } from \"@/stores/utils/jwt\";\n\nexport type AuthModel = { [key: string]: any } | null;\n\nexport type OnStoreChangeFunc = (token: string, model: AuthModel) => void;\n\nconst defaultCookieKey = \"pb_auth\";\n\n/**\n * Base AuthStore class that is intended to be extended by all other\n * PocketBase AuthStore implementations.\n */\nexport abstract class BaseAuthStore {\n protected baseToken: string = \"\";\n protected baseModel: AuthModel = null;\n\n private _onChangeCallbacks: Array<OnStoreChangeFunc> = [];\n\n /**\n * Retrieves the stored token (if any).\n */\n get token(): string {\n return this.baseToken;\n }\n\n /**\n * Retrieves the stored model data (if any).\n */\n get model(): AuthModel {\n return this.baseModel;\n }\n\n /**\n * Loosely checks if the store has valid token (aka. existing and unexpired exp claim).\n */\n get isValid(): boolean {\n return !isTokenExpired(this.token);\n }\n\n /**\n * Checks whether the current store state is for admin authentication.\n */\n get isAdmin(): boolean {\n return getTokenPayload(this.token).type === \"admin\";\n }\n\n /**\n * Checks whether the current store state is for auth record authentication.\n */\n get isAuthRecord(): boolean {\n return getTokenPayload(this.token).type === \"authRecord\";\n }\n\n /**\n * Saves the provided new token and model data in the auth store.\n */\n save(token: string, model?: AuthModel): void {\n this.baseToken = token || \"\";\n this.baseModel = model || null;\n\n this.triggerChange();\n }\n\n /**\n * Removes the stored token and model data form the auth store.\n */\n clear(): void {\n this.baseToken = \"\";\n this.baseModel = null;\n this.triggerChange();\n }\n\n /**\n * Parses the provided cookie string and updates the store state\n * with the cookie's token and model data.\n *\n * NB! This function doesn't validate the token or its data.\n * Usually this isn't a concern if you are interacting only with the\n * PocketBase API because it has the proper server-side security checks in place,\n * but if you are using the store `isValid` state for permission controls\n * in a node server (eg. SSR), then it is recommended to call `authRefresh()`\n * after loading the cookie to ensure an up-to-date token and model state.\n * For example:\n *\n * ```js\n * pb.authStore.loadFromCookie(\"cookie string...\");\n *\n * try {\n * // get an up-to-date auth store state by veryfing and refreshing the loaded auth model (if any)\n * pb.authStore.isValid && await pb.collection('users').authRefresh();\n * } catch (_) {\n * // clear the auth store on failed refresh\n * pb.authStore.clear();\n * }\n * ```\n */\n loadFromCookie(cookie: string, key = defaultCookieKey): void {\n const rawData = cookieParse(cookie || \"\")[key] || \"\";\n\n let data: { [key: string]: any } = {};\n try {\n data = JSON.parse(rawData);\n // normalize\n if (typeof data === null || typeof data !== \"object\" || Array.isArray(data)) {\n data = {};\n }\n } catch (_) {}\n\n this.save(data.token || \"\", data.model || null);\n }\n\n /**\n * Exports the current store state as cookie string.\n *\n * By default the following optional attributes are added:\n * - Secure\n * - HttpOnly\n * - SameSite=Strict\n * - Path=/\n * - Expires={the token expiration date}\n *\n * NB! If the generated cookie exceeds 4096 bytes, this method will\n * strip the model data to the bare minimum to try to fit within the\n * recommended size in https://www.rfc-editor.org/rfc/rfc6265#section-6.1.\n */\n exportToCookie(options?: SerializeOptions, key = defaultCookieKey): string {\n const defaultOptions: SerializeOptions = {\n secure: true,\n sameSite: true,\n httpOnly: true,\n path: \"/\",\n };\n\n // extract the token expiration date\n const payload = getTokenPayload(this.token);\n if (payload?.exp) {\n defaultOptions.expires = new Date(payload.exp * 1000);\n } else {\n defaultOptions.expires = new Date(\"1970-01-01\");\n }\n\n // merge with the user defined options\n options = Object.assign({}, defaultOptions, options);\n\n const rawData = {\n token: this.token,\n model: this.model ? JSON.parse(JSON.stringify(this.model)) : null,\n };\n\n let result = cookieSerialize(key, JSON.stringify(rawData), options);\n\n const resultLength =\n typeof Blob !== \"undefined\" ? new Blob([result]).size : result.length;\n\n // strip down the model data to the bare minimum\n if (rawData.model && resultLength > 4096) {\n rawData.model = { id: rawData?.model?.id, email: rawData?.model?.email };\n const extraProps = [\"collectionId\", \"username\", \"verified\"];\n for (const prop in this.model) {\n if (extraProps.includes(prop)) {\n rawData.model[prop] = this.model[prop];\n }\n }\n result = cookieSerialize(key, JSON.stringify(rawData), options);\n }\n\n return result;\n }\n\n /**\n * Register a callback function that will be called on store change.\n *\n * You can set the `fireImmediately` argument to true in order to invoke\n * the provided callback right after registration.\n *\n * Returns a removal function that you could call to \"unsubscribe\" from the changes.\n */\n onChange(callback: OnStoreChangeFunc, fireImmediately = false): () => void {\n this._onChangeCallbacks.push(callback);\n\n if (fireImmediately) {\n callback(this.token, this.model);\n }\n\n return () => {\n for (let i = this._onChangeCallbacks.length - 1; i >= 0; i--) {\n if (this._onChangeCallbacks[i] == callback) {\n delete this._onChangeCallbacks[i]; // removes the function reference\n this._onChangeCallbacks.splice(i, 1); // reindex the array\n return;\n }\n }\n };\n }\n\n protected triggerChange(): void {\n for (const callback of this._onChangeCallbacks) {\n callback && callback(this.token, this.model);\n }\n }\n}\n","import { BaseAuthStore, AuthModel } from \"@/stores/BaseAuthStore\";\n\n/**\n * The default token store for browsers with auto fallback\n * to runtime/memory if local storage is undefined (eg. in node env).\n */\nexport class LocalAuthStore extends BaseAuthStore {\n private storageFallback: { [key: string]: any } = {};\n private storageKey: string;\n\n constructor(storageKey = \"pocketbase_auth\") {\n super();\n\n this.storageKey = storageKey;\n\n this._bindStorageEvent();\n }\n\n /**\n * @inheritdoc\n */\n get token(): string {\n const data = this._storageGet(this.storageKey) || {};\n\n return data.token || \"\";\n }\n\n /**\n * @inheritdoc\n */\n get model(): AuthModel {\n const data = this._storageGet(this.storageKey) || {};\n\n return data.model || null;\n }\n\n /**\n * @inheritdoc\n */\n save(token: string, model?: AuthModel) {\n this._storageSet(this.storageKey, {\n token: token,\n model: model,\n });\n\n super.save(token, model);\n }\n\n /**\n * @inheritdoc\n */\n clear() {\n this._storageRemove(this.storageKey);\n\n super.clear();\n }\n\n // ---------------------------------------------------------------\n // Internal helpers:\n // ---------------------------------------------------------------\n\n /**\n * Retrieves `key` from the browser's local storage\n * (or runtime/memory if local storage is undefined).\n */\n private _storageGet(key: string): any {\n if (typeof window !== \"undefined\" && window?.localStorage) {\n const rawValue = window.localStorage.getItem(key) || \"\";\n try {\n return JSON.parse(rawValue);\n } catch (e) {\n // not a json\n return rawValue;\n }\n }\n\n // fallback\n return this.storageFallback[key];\n }\n\n /**\n * Stores a new data in the browser's local storage\n * (or runtime/memory if local storage is undefined).\n */\n private _storageSet(key: string, value: any) {\n if (typeof window !== \"undefined\" && window?.localStorage) {\n // store in local storage\n let normalizedVal = value;\n if (typeof value !== \"string\") {\n normalizedVal = JSON.stringify(value);\n }\n window.localStorage.setItem(key, normalizedVal);\n } else {\n // store in fallback\n this.storageFallback[key] = value;\n }\n }\n\n /**\n * Removes `key` from the browser's local storage and the runtime/memory.\n */\n private _storageRemove(key: string) {\n // delete from local storage\n if (typeof window !== \"undefined\" && window?.localStorage) {\n window.localStorage?.removeItem(key);\n }\n\n // delete from fallback\n delete this.storageFallback[key];\n }\n\n /**\n * Updates the current store state on localStorage change.\n */\n private _bindStorageEvent() {\n if (\n typeof window === \"undefined\" ||\n !window?.localStorage ||\n !window.addEventListener\n ) {\n return;\n }\n\n window.addEventListener(\"storage\", (e) => {\n if (e.key != this.storageKey) {\n return;\n }\n\n const data = this._storageGet(this.storageKey) || {};\n\n super.save(data.token || \"\", data.model || null);\n });\n }\n}\n","import Client from \"@/Client\";\n\n/**\n * BaseService class that should be inherited from all API services.\n */\nexport abstract class BaseService {\n readonly client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n}\n","import { BaseService } from \"@/services/utils/BaseService\";\nimport { CommonOptions } from \"@/services/utils/options\";\n\ninterface appleClientSecret {\n secret: string;\n}\n\nexport class SettingsService extends BaseService {\n /**\n * Fetch all available app settings.\n *\n * @throws {ClientResponseError}\n */\n async getAll(options?: CommonOptions): Promise<{ [key: string]: any }> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/settings\", options);\n }\n\n /**\n * Bulk updates app settings.\n *\n * @throws {ClientResponseError}\n */\n async update(\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<{ [key: string]: any }> {\n options = Object.assign(\n {\n method: \"PATCH\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client.send(\"/api/settings\", options);\n }\n\n /**\n * Performs a S3 filesystem connection test.\n *\n * The currently supported `filesystem` are \"storage\" and \"backups\".\n *\n * @throws {ClientResponseError}\n */\n async testS3(\n filesystem: string = \"storage\",\n options?: CommonOptions,\n ): Promise<boolean> {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n filesystem: filesystem,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/test/s3\", options).then(() => true);\n }\n\n /**\n * Sends a test email.\n *\n * The possible `emailTemplate` values are:\n * - verification\n * - password-reset\n * - email-change\n *\n * @throws {ClientResponseError}\n */\n async testEmail(\n toEmail: string,\n emailTemplate: string,\n options?: CommonOptions,\n ): Promise<boolean> {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n email: toEmail,\n template: emailTemplate,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/test/email\", options).then(() => true);\n }\n\n /**\n * Generates a new Apple OAuth2 client secret.\n *\n * @throws {ClientResponseError}\n */\n async generateAppleClientSecret(\n clientId: string,\n teamId: string,\n keyId: string,\n privateKey: string,\n duration: number,\n options?: CommonOptions,\n ): Promise<appleClientSecret> {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n clientId,\n teamId,\n keyId,\n privateKey,\n duration,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/apple/generate-client-secret\", options);\n }\n}\n","import { BaseService } from \"@/services/utils/BaseService\";\nimport { ClientResponseError } from \"@/ClientResponseError\";\nimport { ListResult } from \"@/services/utils/dtos\";\nimport { CommonOptions, ListOptions, FullListOptions } from \"@/services/utils/options\";\n\nexport abstract class CrudService<M> extends BaseService {\n /**\n * Base path for the crud actions (without trailing slash, eg. '/admins').\n */\n abstract get baseCrudPath(): string;\n\n /**\n * Response data decoder.\n */\n decode<T = M>(data: { [key: string]: any }): T {\n return data as T;\n }\n\n /**\n * Returns a promise with all list items batch fetched at once\n * (by default 500 items per request; to change it set the `batch` query param).\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async getFullList<T = M>(options?: FullListOptions): Promise<Array<T>>;\n\n /**\n * Legacy version of getFullList with explicitly specified batch size.\n */\n async getFullList<T = M>(batch?: number, options?: ListOptions): Promise<Array<T>>;\n\n async getFullList<T = M>(\n batchOrqueryParams?: number | FullListOptions,\n options?: ListOptions,\n ): Promise<Array<T>> {\n if (typeof batchOrqueryParams == \"number\") {\n return this._getFullList<T>(batchOrqueryParams, options);\n }\n\n options = Object.assign({}, batchOrqueryParams, options);\n\n let batch = 500;\n if (options.batch) {\n batch = options.batch;\n delete options.batch;\n }\n\n return this._getFullList<T>(batch, options);\n }\n\n /**\n * Returns paginated items list.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async getList<T = M>(\n page = 1,\n perPage = 30,\n options?: ListOptions,\n ): Promise<ListResult<T>> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n options.query = Object.assign(\n {\n page: page,\n perPage: perPage,\n },\n options.query,\n );\n\n return this.client.send(this.baseCrudPath, options).then((responseData: any) => {\n responseData.items =\n responseData.items?.map((item: any) => {\n return this.decode<T>(item);\n }) || [];\n\n return responseData;\n });\n }\n\n /**\n * Returns the first found item by the specified filter.\n *\n * Internally it calls `getList(1, 1, { filter, skipTotal })` and\n * returns the first found item.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * For consistency with `getOne`, this method will throw a 404\n * ClientResponseError if no item was found.\n *\n * @throws {ClientResponseError}\n */\n async getFirstListItem<T = M>(filter: string, options?: CommonOptions): Promise<T> {\n options = Object.assign(\n {\n requestKey: \"one_by_filter_\" + this.baseCrudPath + \"_\" + filter,\n },\n options,\n );\n\n options.query = Object.assign(\n {\n filter: filter,\n skipTotal: 1,\n },\n options.query,\n );\n\n return this.getList<T>(1, 1, options).then((result) => {\n if (!result?.items?.length) {\n throw new ClientResponseError({\n status: 404,\n response: {\n code: 404,\n message: \"The requested resource wasn't found.\",\n data: {},\n },\n });\n }\n\n return result.items[0];\n });\n }\n\n /**\n * Returns single item by its id.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * If `id` is empty it will throw a 404 error.\n *\n * @throws {ClientResponseError}\n */\n async getOne<T = M>(id: string, options?: CommonOptions): Promise<T> {\n if (!id) {\n throw new ClientResponseError({\n url: this.client.buildUrl(this.baseCrudPath + \"/\"),\n status: 404,\n response: {\n code: 404,\n message: \"Missing required record id.\",\n data: {},\n },\n });\n }\n\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then((responseData: any) => this.decode<T>(responseData));\n }\n\n /**\n * Creates a new item.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async create<T = M>(\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<T> {\n options = Object.assign(\n {\n method: \"POST\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath, options)\n .then((responseData: any) => this.decode<T>(responseData));\n }\n\n /**\n * Updates an existing item by its id.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async update<T = M>(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<T> {\n options = Object.assign(\n {\n method: \"PATCH\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then((responseData: any) => this.decode<T>(responseData));\n }\n\n /**\n * Deletes an existing item by its id.\n *\n * @throws {ClientResponseError}\n */\n async delete(id: string, options?: CommonOptions): Promise<boolean> {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then(() => true);\n }\n\n /**\n * Returns a promise with all list items batch fetched at once.\n */\n protected _getFullList<T = M>(\n batchSize = 500,\n options?: ListOptions,\n ): Promise<Array<T>> {\n options = options || {};\n options.query = Object.assign(\n {\n skipTotal: 1,\n },\n options.query,\n );\n\n let result: Array<T> = [];\n\n let request = async (page: number): Promise<Array<any>> => {\n return this.getList(page, batchSize || 500, options).then((list) => {\n const castedList = list as any as ListResult<T>;\n const items = castedList.items;\n\n result = result.concat(items);\n\n if (items.length == list.perPage) {\n return request(page + 1);\n }\n\n return result;\n });\n };\n\n return request(1);\n }\n}\n","import { SendOptions } from \"@/services/utils/options\";\n\nexport function normalizeLegacyOptionsArgs(\n legacyWarn: string,\n baseOptions: SendOptions,\n bodyOrOptions?: any,\n query?: any,\n): SendOptions {\n const hasBodyOrOptions = typeof bodyOrOptions !== \"undefined\";\n const hasQuery = typeof query !== \"undefined\";\n\n if (!hasQuery && !hasBodyOrOptions) {\n return baseOptions;\n }\n\n if (hasQuery) {\n console.warn(legacyWarn);\n baseOptions.body = Object.assign({}, baseOptions.body, bodyOrOptions);\n baseOptions.query = Object.assign({}, baseOptions.query, query);\n\n return baseOptions;\n }\n\n return Object.assign(baseOptions, bodyOrOptions);\n}\n","import Client from \"@/Client\";\nimport { isTokenExpired } from \"@/stores/utils/jwt\";\n\n// reset previous auto refresh registrations\nexport function resetAutoRefresh(client: Client) {\n (client as any)._resetAutoRefresh?.();\n}\n\nexport function registerAutoRefresh(\n client: Client,\n threshold: number,\n refreshFunc: () => Promise<any>,\n reauthenticateFunc: () => Promise<any>,\n) {\n resetAutoRefresh(client);\n\n const oldBeforeSend = client.beforeSend;\n const oldModel = client.authStore.model;\n\n // unset the auto refresh in case the auth store was cleared\n // OR a new model was authenticated\n const unsubStoreChange = client.authStore.onChange((newToken, model) => {\n if (\n !newToken ||\n model?.id != oldModel?.id ||\n // check the collection id in case an admin and auth record share the same id\n ((model?.collectionId || oldModel?.collectionId) &&\n model?.collectionId != oldModel?.collectionId)\n ) {\n resetAutoRefresh(client);\n }\n });\n\n // initialize a reset function and attach it dynamically to the client\n (client as any)._resetAutoRefresh = function () {\n unsubStoreChange();\n client.beforeSend = oldBeforeSend;\n delete (client as any)._resetAutoRefresh;\n };\n\n client.beforeSend = async (url, sendOptions) => {\n const oldToken = client.authStore.token;\n\n if (sendOptions.query?.autoRefresh) {\n return oldBeforeSend ? oldBeforeSend(url, sendOptions) : { url, sendOptions };\n }\n\n let isValid = client.authStore.isValid;\n if (\n // is loosely valid\n isValid &&\n // but it is going to expire in the next \"threshold\" seconds\n isTokenExpired(client.authStore.token, threshold)\n ) {\n try {\n await refreshFunc();\n } catch (_) {\n isValid = false;\n }\n }\n\n // still invalid -> reauthenticate\n if (!isValid) {\n await reauthenticateFunc();\n }\n\n // the request wasn't sent with a custom token\n const headers = sendOptions.headers || {};\n for (let key in headers) {\n if (\n key.toLowerCase() == \"authorization\" &&\n // the request wasn't sent with a custom token\n oldToken == headers[key] &&\n client.authStore.token\n ) {\n // set the latest store token\n headers[key] = client.authStore.token;\n break;\n }\n }\n sendOptions.headers = headers;\n\n return oldBeforeSend ? oldBeforeSend(url, sendOptions) : { url, sendOptions };\n };\n}\n","import { CrudService } from \"@/services/utils/CrudService\";\nimport { AdminModel } from \"@/services/utils/dtos\";\nimport { AuthOptions, CommonOptions } from \"@/services/utils/options\";\nimport { normalizeLegacyOptionsArgs } from \"@/services/utils/legacy\";\nimport { registerAutoRefresh, resetAutoRefresh } from \"@/services/utils/refresh\";\n\nexport interface AdminAuthResponse {\n [key: string]: any;\n\n token: string;\n admin: AdminModel;\n}\n\nexport class AdminService extends CrudService<AdminModel> {\n /**\n * @inheritdoc\n */\n get baseCrudPath(): string {\n return \"/api/admins\";\n }\n\n // ---------------------------------------------------------------\n // Post update/delete AuthStore sync\n // ---------------------------------------------------------------\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.model` matches with the updated id, then\n * on success the `client.authStore.model` will be updated with the result.\n */\n async update<T = AdminModel>(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<T> {\n return super.update(id, bodyParams, options).then((item) => {\n // update the store state if the updated item id matches with the stored model\n if (\n this.client.authStore.model?.id === item.id &&\n typeof this.client.authStore.model?.collectionId === \"undefined\" // is not record auth\n ) {\n this.client.authStore.save(this.client.authStore.token, item);\n }\n\n return item as any as T;\n });\n }\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.model` matches with the deleted id,\n * then on success the `client.authStore` will be cleared.\n */\n async delete(id: string, options?: CommonOptions): Promise<boolean> {\n return super.delete(id, options).then((success) => {\n // clear the store state if the deleted item id matches with the stored model\n if (\n success &&\n this.client.authStore.model?.id === id &&\n typeof this.client.authStore.model?.collectionId === \"undefined\" // is not record auth\n ) {\n this.client.authStore.clear();\n }\n\n return success;\n });\n }\n\n // ---------------------------------------------------------------\n // Auth handlers\n // ---------------------------------------------------------------\n\n /**\n * Prepare successful authorize response.\n */\n protected authResponse(responseData: any): AdminAuthResponse {\n const admin = this.decode(responseData?.admin || {});\n\n if (responseData?.token && responseData?.admin) {\n this.client.authStore.save(responseData.token, admin);\n }\n\n return Object.assign({}, responseData, {\n // normalize common fields\n token: responseData?.token || \"\",\n admin: admin,\n });\n }\n\n /**\n * Authenticate an admin account with its email and password\n * and returns a new admin token and data.\n *\n * On success this method automatically updates the client's AuthStore data.\n *\n * @throws {ClientResponseError}\n */\n async authWithPassword(\n email: string,\n password: string,\n options?: AuthOptions,\n ): Promise<AdminAuthResponse>;\n\n /**\n * @deprecated\n * Consider using authWithPassword(email, password, options?).\n */\n async authWithPassword(\n email: string,\n password: string,\n body?: any,\n query?: any,\n ): Promise<AdminAuthResponse>;\n\n async authWithPassword(\n email: string,\n password: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<AdminAuthResponse> {\n let options: any = {\n method: \"POST\",\n body: {\n identity: email,\n password: password,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authWithPassword(email, pass, body?, query?) is deprecated. Consider replacing it with authWithPassword(email, pass, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n const autoRefreshThreshold = options.autoRefreshThreshold;\n delete options.autoRefreshThreshold;\n\n // not from auto refresh reauthentication\n if (!options.autoRefresh) {\n resetAutoRefresh(this.client);\n }\n\n let authData = await this.client.send(\n this.baseCrudPath + \"/auth-with-password\",\n options,\n );\n\n authData = this.authResponse(authData);\n\n if (autoRefreshThreshold) {\n registerAutoRefresh(\n this.client,\n autoRefreshThreshold,\n () => this.authRefresh({ autoRefresh: true }),\n () =>\n this.authWithPassword(\n email,\n password,\n Object.assign({ autoRefresh: true }, options),\n ),\n );\n }\n\n return authData;\n }\n\n /**\n * Refreshes the current admin authenticated instance and\n * returns a new token and admin data.\n *\n * On success this method automatically updates the client's AuthStore data.\n *\n * @throws {ClientResponseError}\n */\n async authRefresh(options?: CommonOptions): Promise<AdminAuthResponse>;\n\n /**\n * @deprecated\n * Consider using authRefresh(options?).\n */\n async authRefresh(body?: any, query?: any): Promise<AdminAuthResponse>;\n\n async authRefresh(bodyOrOptions?: any, query?: any): Promise<AdminAuthResponse> {\n let options: any = {\n method: \"POST\",\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authRefresh(body?, query?) is deprecated. Consider replacing it with authRefresh(options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/auth-refresh\", options)\n .then(this.authResponse.bind(this));\n }\n\n /**\n * Sends admin password reset request.\n *\n * @throws {ClientResponseError}\n */\n async requestPasswordReset(email: string, options?: CommonOptions): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using requestPasswordReset(email, options?).\n */\n async requestPasswordReset(email: string, body?: any, query?: any): Promise<boolean>;\n\n async requestPasswordReset(\n email: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n email: email,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestPasswordReset(email, body?, query?) is deprecated. Consider replacing it with requestPasswordReset(email, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/request-password-reset\", options)\n .then(() => true);\n }\n\n /**\n * Confirms admin password reset request.\n *\n * @throws {ClientResponseError}\n */\n async confirmPasswordReset(\n resetToken: string,\n password: string,\n passwordConfirm: string,\n options?: CommonOptions,\n ): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using confirmPasswordReset(resetToken, password, passwordConfirm, options?).\n */\n async confirmPasswordReset(\n resetToken: string,\n password: string,\n passwordConfirm: string,\n body?: any,\n query?: any,\n ): Promise<boolean>;\n\n async confirmPasswordReset(\n resetToken: string,\n password: string,\n passwordConfirm: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n token: resetToken,\n password: password,\n passwordConfirm: passwordConfirm,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmPasswordReset(resetToken, password, passwordConfirm, body?, query?) is deprecated. Consider replacing it with confirmPasswordReset(resetToken, password, passwordConfirm, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/confirm-password-reset\", options)\n .then(() => true);\n }\n}\n","export interface SendOptions extends RequestInit {\n // for backward compatibility and to minimize the verbosity,\n // any top-level field that doesn't exist in RequestInit or the\n // fields below will be treated as query parameter.\n [key: string]: any;\n\n /**\n * Optional custom fetch function to use for sending the request.\n */\n fetch?: (url: RequestInfo | URL, config?: RequestInit) => Promise<Response>;\n\n /**\n * Custom headers to send with the requests.\n */\n headers?: { [key: string]: string };\n\n /**\n * The body of the request (serialized automatically for json requests).\n */\n body?: any;\n\n /**\n * Query parameters that will be appended to the request url.\n */\n query?: { [key: string]: any };\n\n /**\n * @deprecated use `query` instead\n *\n * for backward-compatibility `params` values are merged with `query`,\n * but this option may get removed in the final v1 release\n */\n params?: { [key: string]: any };\n\n /**\n * The request identifier that can be used to cancel pending requests.\n */\n requestKey?: string | null;\n\n /**\n * @deprecated use `requestKey:string` instead\n */\n $cancelKey?: string;\n\n /**\n * @deprecated use `requestKey:null` instead\n */\n $autoCancel?: boolean;\n}\n\nexport interface CommonOptions extends SendOptions {\n fields?: string;\n}\n\nexport interface ListOptions extends CommonOptions {\n page?: number;\n perPage?: number;\n sort?: string;\n filter?: string;\n skipTotal?: boolean;\n}\n\nexport interface FullListOptions extends ListOptions {\n batch?: number;\n}\n\nexport interface RecordOptions extends CommonOptions {\n expand?: string;\n}\n\nexport interface RecordListOptions extends ListOptions, RecordOptions {}\n\nexport interface RecordFullListOptions extends FullListOptions, RecordOptions {}\n\nexport interface LogStatsOptions extends CommonOptions {\n filter?: string;\n}\n\nexport interface FileOptions extends CommonOptions {\n thumb?: string;\n download?: boolean;\n}\n\nexport interface AuthOptions extends CommonOptions {\n /**\n * If autoRefreshThreshold is set it will take care to auto refresh\n * when necessary the auth data before each request to ensure that\n * the auth state is always valid.\n *\n * The value must be in seconds, aka. the amount of seconds\n * that will be subtracted from the current token `exp` claim in order\n * to determine whether it is going to expire within the specified time threshold.\n *\n * For example, if you want to auto refresh the token if it is\n * going to expire in the next 30mins (or already has expired),\n * it can be set to `1800`\n */\n autoRefreshThreshold?: number;\n}\n\n// -------------------------------------------------------------------\n\n// list of known SendOptions keys (everything else is treated as query param)\nconst knownSendOptionsKeys = [\n \"requestKey\",\n \"$cancelKey\",\n \"$autoCancel\",\n \"fetch\",\n \"headers\",\n \"body\",\n \"query\",\n \"params\",\n // ---,\n \"cache\",\n \"credentials\",\n \"headers\",\n \"integrity\",\n \"keepalive\",\n \"method\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"window\",\n];\n\n// modifies in place the provided options by moving unknown send options as query parameters.\nexport function normalizeUnknownQueryParams(options?: SendOptions): void {\n if (!options) {\n return;\n }\n\n options.query = options.query || {};\n for (let key in options) {\n if (knownSendOptionsKeys.includes(key)) {\n continue;\n }\n\n options.query[key] = options[key];\n delete options[key];\n }\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseService } from \"@/services/utils/BaseService\";\nimport { SendOptions, normalizeUnknownQueryParams } from \"@/services/utils/options\";\n\ninterface promiseCallbacks {\n resolve: Function;\n reject: Function;\n}\n\ntype Subscriptions = { [key: string]: Array<EventListener> };\n\nexport type UnsubscribeFunc = () => Promise<void>;\n\nexport class RealtimeService extends BaseService {\n clientId: string = \"\";\n\n private eventSource: EventSource | null = null;\n private subscriptions: Subscriptions = {};\n private lastSentSubscriptions: Array<string> = [];\n private connectTimeoutId: any;\n private maxConnectTimeout: number = 15000;\n private reconnectTimeoutId: any;\n private reconnectAttempts: number = 0;\n private maxReconnectAttempts: number = Infinity;\n private predefinedReconnectIntervals: Array<number> = [\n 200, 300, 500, 1000, 1200, 1500, 2000,\n ];\n private pendingConnects: Array<promiseCallbacks> = [];\n\n /**\n * Returns whether the realtime connection has been established.\n */\n get isConnected(): boolean {\n return !!this.eventSource && !!this.clientId && !this.pendingConnects.length;\n }\n\n /**\n * Register the subscription listener.\n *\n * You can subscribe multiple times to the same topic.\n *\n * If the SSE connection is not started yet,\n * this method will also initialize it.\n */\n async subscribe(\n topic: string,\n callback: (data: any) => void,\n options?: SendOptions,\n ): Promise<UnsubscribeFunc> {\n if (!topic) {\n throw new Error(\"topic must be set.\");\n }\n\n let key = topic;\n\n // serialize and append the topic options (if any)\n if (options) {\n normalizeUnknownQueryParams(options);\n const serialized =\n \"options=\" +\n encodeURIComponent(\n JSON.stringify({ query: options.query, headers: options.headers }),\n );\n key += (key.includes(\"?\") ? \"&\" : \"?\") + serialized;\n }\n\n const listener = function (e: Event) {\n const msgEvent = e as MessageEvent;\n\n let data;\n try {\n data = JSON.parse(msgEvent?.data);\n } catch {}\n\n callback(data || {});\n };\n\n // store the listener\n if (!this.subscriptions[key]) {\n this.subscriptions[key] = [];\n }\n this.subscriptions[key].push(listener);\n\n if (!this.isConnected) {\n // initialize sse connection\n await this.connect();\n } else if (this.subscriptions[key].length === 1) {\n // send the updated subscriptions (if it is the first for the key)\n await this.submitSubscriptions();\n } else {\n // only register the listener\n this.eventSource?.addEventListener(key, listener);\n }\n\n return async (): Promise<void> => {\n return this.unsubscribeByTopicAndListener(topic, listener);\n };\n }\n\n /**\n * Unsubscribe from all subscription listeners with the specified topic.\n *\n * If `topic` is not provided, then this method will unsubscribe\n * from all active subscriptions.\n *\n * This method is no-op if there are no active subscriptions.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribe(topic?: string): Promise<void> {\n let needToSubmit = false;\n\n if (!topic) {\n // remove all subscriptions\n this.subscriptions = {};\n } else {\n // remove all listeners related to the topic\n const subs = this.getSubscriptionsByTopic(topic);\n for (let key in subs) {\n if (!this.hasSubscriptionListeners(key)) {\n continue; // already unsubscribed\n }\n\n for (let listener of this.subscriptions[key]) {\n this.eventSource?.removeEventListener(key, listener);\n }\n delete this.subscriptions[key];\n\n // mark for subscriptions change submit if there are no other listeners\n if (!needToSubmit) {\n needToSubmit = true;\n }\n }\n }\n\n if (!this.hasSubscriptionListeners()) {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n } else if (needToSubmit) {\n await this.submitSubscriptions();\n }\n }\n\n /**\n * Unsubscribe from all subscription listeners starting with the specified topic prefix.\n *\n * This method is no-op if there are no active subscriptions with the specified topic prefix.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribeByPrefix(keyPrefix: string): Promise<void> {\n let hasAtleastOneTopic = false;\n for (let key in this.subscriptions) {\n // \"?\" so that it can be used as end delimiter for the prefix\n if (!(key + \"?\").startsWith(keyPrefix)) {\n continue;\n }\n\n hasAtleastOneTopic = true;\n for (let listener of this.subscriptions[key]) {\n this.eventSource?.removeEventListener(key, listener);\n }\n delete this.subscriptions[key];\n }\n\n if (!hasAtleastOneTopic) {\n return; // nothing to unsubscribe from\n }\n\n if (this.hasSubscriptionListeners()) {\n // submit the deleted subscriptions\n await this.submitSubscriptions();\n } else {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n }\n }\n\n /**\n * Unsubscribe from all subscriptions matching the specified topic and listener function.\n *\n * This method is no-op if there are no active subscription with\n * the specified topic and listener.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribeByTopicAndListener(\n topic: string,\n listener: EventListener,\n ): Promise<void> {\n let needToSubmit = false;\n\n const subs = this.getSubscriptionsByTopic(topic);\n for (let key in subs) {\n if (\n !Array.isArray(this.subscriptions[key]) ||\n !this.subscriptions[key].length\n ) {\n continue; // already unsubscribed\n }\n\n let exist = false;\n for (let i = this.subscriptions[key].length - 1; i >= 0; i--) {\n if (this.subscriptions[key][i] !== listener) {\n continue;\n }\n\n exist = true; // has at least one matching listener\n delete this.subscriptions[key][i]; // removes the function reference\n this.subscriptions[key].splice(i, 1); // reindex the array\n this.eventSource?.removeEventListener(key, listener);\n }\n if (!exist) {\n continue;\n }\n\n // remove the key from the subscriptions list if there are no other listeners\n if (!this.subscriptions[key].length) {\n delete this.subscriptions[key];\n }\n\n // mark for subscriptions change submit if there are no other listeners\n if (!needToSubmit && !this.hasSubscriptionListeners(key)) {\n needToSubmit = true;\n }\n }\n\n if (!this.hasSubscriptionListeners()) {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n } else if (needToSubmit) {\n await this.submitSubscriptions();\n }\n }\n\n private hasSubscriptionListeners(keyToCheck?: string): boolean {\n this.subscriptions = this.subscriptions || {};\n\n // check the specified key\n if (keyToCheck) {\n return !!this.subscriptions[keyToCheck]?.length;\n }\n\n // check for at least one non-empty subscription\n for (let key in this.subscriptions) {\n if (!!this.subscriptions[key]?.length) {\n return true;\n }\n }\n\n return false;\n }\n\n private async submitSubscriptions(): Promise<void> {\n if (!this.clientId) {\n return; // no client/subscriber\n }\n\n // optimistic update\n this.addAllSubscriptionListeners();\n\n this.lastSentSubscriptions = this.getNonEmptySubscriptionKeys();\n\n return this.client\n .send(\"/api/realtime\", {\n method: \"POST\",\n body: {\n clientId: this.clientId,\n subscriptions: this.lastSentSubscriptions,\n },\n requestKey: this.getSubscriptionsCancelKey(),\n })\n .catch((err) => {\n if (err?.isAbort) {\n return; // silently ignore aborted pending requests\n }\n throw err;\n });\n }\n\n private getSubscriptionsCancelKey(): string {\n return \"realtime_\" + this.clientId;\n }\n\n private getSubscriptionsByTopic(topic: string): Subscriptions {\n const result: Subscriptions = {};\n\n // \"?\" so that it can be used as end delimiter for the topic\n topic = topic.includes(\"?\") ? topic : topic + \"?\";\n\n for (let key in this.subscriptions) {\n if ((key + \"?\").startsWith(topic)) {\n result[key] = this.subscriptions[key];\n }\n }\n\n return result;\n }\n\n private getNonEmptySubscriptionKeys(): Array<string> {\n const result: Array<string> = [];\n\n for (let key in this.subscriptions) {\n if (this.subscriptions[key].length) {\n result.push(key);\n }\n }\n\n return result;\n }\n\n private addAllSubscriptionListeners(): void {\n if (!this.eventSource) {\n return;\n }\n\n this.removeAllSubscriptionListeners();\n\n for (let key in this.subscriptions) {\n for (let listener of this.subscriptions[key]) {\n this.eventSource.addEventListener(key, listener);\n }\n }\n }\n\n private removeAllSubscriptionListeners(): void {\n if (!this.eventSource) {\n return;\n }\n\n for (let key in this.subscriptions) {\n for (let listener of this.subscriptions[key]) {\n this.eventSource.removeEventListener(key, listener);\n }\n }\n }\n\n private async connect(): Promise<void> {\n if (this.reconnectAttempts > 0) {\n // immediately resolve the promise to avoid indefinitely\n // blocking the client during reconnection\n return;\n }\n\n return new Promise((resolve, reject) => {\n this.pendingConnects.push({ resolve, reject });\n\n if (this.pendingConnects.length > 1) {\n // all promises will be resolved once the connection is established\n return;\n }\n\n this.initConnect();\n });\n }\n\n private initConnect() {\n this.disconnect(true);\n\n // wait up to 15s for connect\n clearTimeout(this.connectTimeoutId);\n this.connectTimeoutId = setTimeout(() => {\n this.connectErrorHandler(new Error(\"EventSource connect took too long.\"));\n }, this.maxConnectTimeout);\n\n this.eventSource = new EventSource(this.client.buildUrl(\"/api/realtime\"));\n\n this.eventSource.onerror = (_) => {\n this.connectErrorHandler(\n new Error(\"Failed to establish realtime connection.\"),\n );\n };\n\n this.eventSource.addEventListener(\"PB_CONNECT\", (e) => {\n const msgEvent = e as MessageEvent;\n this.clientId = msgEvent?.lastEventId;\n\n this.submitSubscriptions()\n .then(async () => {\n let retries = 3;\n while (this.hasUnsentSubscriptions() && retries > 0) {\n retries--;\n // resubscribe to ensure that the latest topics are submitted\n //\n // This is needed because missed topics could happen on reconnect\n // if after the pending sent `submitSubscriptions()` call another `subscribe()`\n // was made before the submit was able to complete.\n await this.submitSubscriptions();\n }\n })\n .then(() => {\n for (let p of this.pendingConnects) {\n p.resolve();\n }\n\n // reset connect meta\n this.pendingConnects = [];\n this.reconnectAttempts = 0;\n clearTimeout(this.reconnectTimeoutId);\n clearTimeout(this.connectTimeoutId);\n\n // propagate the PB_CONNECT event\n const connectSubs = this.getSubscriptionsByTopic(\"PB_CONNECT\");\n for (let key in connectSubs) {\n for (let listener of connectSubs[key]) {\n listener(e);\n }\n }\n })\n .catch((err) => {\n this.clientId = \"\";\n this.connectErrorHandler(err);\n });\n });\n }\n\n private hasUnsentSubscriptions(): boolean {\n const latestTopics = this.getNonEmptySubscriptionKeys();\n if (latestTopics.length != this.lastSentSubscriptions.length) {\n return true;\n }\n\n for (const t of latestTopics) {\n if (!this.lastSentSubscriptions.includes(t)) {\n return true;\n }\n }\n\n return false;\n }\n\n private connectErrorHandler(err: any) {\n clearTimeout(this.connectTimeoutId);\n clearTimeout(this.reconnectTimeoutId);\n\n if (\n // wasn't previously connected -> direct reject\n (!this.clientId && !this.reconnectAttempts) ||\n // was previously connected but the max reconnection limit has been reached\n this.reconnectAttempts > this.maxReconnectAttempts\n ) {\n for (let p of this.pendingConnects) {\n p.reject(new ClientResponseError(err));\n }\n this.pendingConnects = [];\n this.disconnect();\n return;\n }\n\n // otherwise -> reconnect in the background\n this.disconnect(true);\n const timeout =\n this.predefinedReconnectIntervals[this.reconnectAttempts] ||\n this.predefinedReconnectIntervals[\n this.predefinedReconnectIntervals.length - 1\n ];\n this.reconnectAttempts++;\n this.reconnectTimeoutId = setTimeout(() => {\n this.initConnect();\n }, timeout);\n }\n\n private disconnect(fromReconnect = false): void {\n clearTimeout(this.connectTimeoutId);\n clearTimeout(this.reconnectTimeoutId);\n this.removeAllSubscriptionListeners();\n this.client.cancelRequest(this.getSubscriptionsCancelKey());\n this.eventSource?.close();\n this.eventSource = null;\n this.clientId = \"\";\n\n if (!fromReconnect) {\n this.reconnectAttempts = 0;\n\n // resolve any remaining connect promises\n //\n // this is done to avoid unnecessary throwing errors in case\n // unsubscribe is called before the pending connect promises complete\n // (see https://github.com/pocketbase/pocketbase/discussions/2897#discussioncomment-6423818)\n for (let p of this.pendingConnects) {\n p.resolve();\n }\n this.pendingConnects = [];\n }\n }\n}\n","import Client from \"@/Client\";\nimport { getTokenPayload } from \"@/stores/utils/jwt\";\nimport { CrudService } from \"@/services/utils/CrudService\";\nimport { RealtimeService, UnsubscribeFunc } from \"@/services/RealtimeService\";\nimport { ClientResponseError } from \"@/ClientResponseError\";\nimport { ListResult, RecordModel, ExternalAuthModel } from \"@/services/utils/dtos\";\nimport {\n SendOptions,\n CommonOptions,\n RecordOptions,\n RecordListOptions,\n RecordFullListOptions,\n} from \"@/services/utils/options\";\nimport { normalizeLegacyOptionsArgs } from \"@/services/utils/legacy\";\n\nexport interface RecordAuthResponse<T = RecordModel> {\n /**\n * The signed PocketBase auth record.\n */\n record: T;\n\n /**\n * The PocketBase record auth token.\n *\n * If you are looking for the OAuth2 access and refresh tokens\n * they are available under the `meta.accessToken` and `meta.refreshToken` props.\n */\n token: string;\n\n /**\n * Auth meta data usually filled when OAuth2 is used.\n */\n meta?: { [key: string]: any };\n}\n\nexport interface AuthProviderInfo {\n name: string;\n displayName: string;\n state: string;\n authUrl: string;\n codeVerifier: string;\n codeChallenge: string;\n codeChallengeMethod: string;\n}\n\nexport interface AuthMethodsList {\n usernamePassword: boolean;\n emailPassword: boolean;\n onlyVerified: boolean;\n authProviders: Array<AuthProviderInfo>;\n}\n\nexport interface RecordSubscription<T = RecordModel> {\n action: string; // eg. create, update, delete\n record: T;\n}\n\nexport type OAuth2UrlCallback = (url: string) => void | Promise<void>;\n\nexport interface OAuth2AuthConfig extends SendOptions {\n // the name of the OAuth2 provider (eg. \"google\")\n provider: string;\n\n // custom scopes to overwrite the default ones\n scopes?: Array<string>;\n\n // optional record create data\n createData?: { [key: string]: any };\n\n // optional callback that is triggered after the OAuth2 sign-in/sign-up url generation\n urlCallback?: OAuth2UrlCallback;\n\n // optional query params to send with the PocketBase auth request (eg. fields, expand, etc.)\n query?: RecordOptions;\n}\n\nexport class RecordService<M = RecordModel> extends CrudService<M> {\n readonly collectionIdOrName: string;\n\n constructor(client: Client, collectionIdOrName: string) {\n super(client);\n\n this.collectionIdOrName = collectionIdOrName;\n }\n\n /**\n * @inheritdoc\n */\n get baseCrudPath(): string {\n return this.baseCollectionPath + \"/records\";\n }\n\n /**\n * Returns the current collection service base path.\n */\n get baseCollectionPath(): string {\n return \"/api/collections/\" + encodeURIComponent(this.collectionIdOrName);\n }\n\n // ---------------------------------------------------------------\n // Realtime handlers\n // ---------------------------------------------------------------\n\n /**\n * Subscribe to realtime changes to the specified topic (\"*\" or record id).\n *\n * If `topic` is the wildcard \"*\", then this method will subscribe to\n * any record changes in the collection.\n *\n * If `topic` is a record id, then this method will subscribe only\n * to changes of the specified record id.\n *\n * It's OK to subscribe multiple times to the same topic.\n * You can use the returned `UnsubscribeFunc` to remove only a single subscription.\n * Or use `unsubscribe(topic)` if you want to remove all subscriptions attached to the topic.\n */\n async subscribe<T = M>(\n topic: string,\n callback: (data: RecordSubscription<T>) => void,\n options?: SendOptions,\n ): Promise<UnsubscribeFunc> {\n if (!topic) {\n throw new Error(\"Missing topic.\");\n }\n\n if (!callback) {\n throw new Error(\"Missing subscription callback.\");\n }\n\n return this.client.realtime.subscribe(\n this.collectionIdOrName + \"/\" + topic,\n callback,\n options,\n );\n }\n\n /**\n * Unsubscribe from all subscriptions of the specified topic\n * (\"*\" or record id).\n *\n * If `topic` is not set, then this method will unsubscribe from\n * all subscriptions associated to the current collection.\n */\n async unsubscribe(topic?: string): Promise<void> {\n // unsubscribe from the specified topic\n if (topic) {\n return this.client.realtime.unsubscribe(\n this.collectionIdOrName + \"/\" + topic,\n );\n }\n\n // unsubscribe from everything related to the collection\n return this.client.realtime.unsubscribeByPrefix(this.collectionIdOrName);\n }\n\n // ---------------------------------------------------------------\n // Crud handers\n // ---------------------------------------------------------------\n /**\n * @inheritdoc\n */\n async getFullList<T = M>(options?: RecordFullListOptions): Promise<Array<T>>;\n\n /**\n * @inheritdoc\n */\n async getFullList<T = M>(\n batch?: number,\n options?: RecordListOptions,\n ): Promise<Array<T>>;\n\n /**\n * @inheritdoc\n */\n async getFullList<T = M>(\n batchOrOptions?: number | RecordFullListOptions,\n options?: RecordListOptions,\n ): Promise<Array<T>> {\n if (typeof batchOrOptions == \"number\") {\n return super.getFullList<T>(batchOrOptions, options);\n }\n\n const params = Object.assign({}, batchOrOptions, options);\n\n return super.getFullList<T>(params);\n }\n\n /**\n * @inheritdoc\n */\n async getList<T = M>(\n page = 1,\n perPage = 30,\n options?: RecordListOptions,\n ): Promise<ListResult<T>> {\n return super.getList<T>(page, perPage, options);\n }\n\n /**\n * @inheritdoc\n */\n async getFirstListItem<T = M>(\n filter: string,\n options?: RecordListOptions,\n ): Promise<T> {\n return super.getFirstListItem<T>(filter, options);\n }\n\n /**\n * @inheritdoc\n */\n async getOne<T = M>(id: string, options?: RecordOptions): Promise<T> {\n return super.getOne<T>(id, options);\n }\n\n /**\n * @inheritdoc\n */\n async create<T = M>(\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): Promise<T> {\n return super.create<T>(bodyParams, options);\n }\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.model` matches with the updated id, then\n * on success the `client.authStore.model` will be updated with the result.\n */\n async update<T = M>(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): Promise<T> {\n return super.update<RecordModel>(id, bodyParams, options).then((item) => {\n if (\n // is record auth\n this.client.authStore.model?.id === item?.id &&\n (this.client.authStore.model?.collectionId === this.collectionIdOrName ||\n this.client.authStore.model?.collectionName ===\n this.collectionIdOrName)\n ) {\n this.client.authStore.save(this.client.authStore.token, item);\n }\n\n return item as any as T;\n });\n }\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.model` matches with the deleted id,\n * then on success the `client.authStore` will be cleared.\n */\n async delete(id: string, options?: CommonOptions): Promise<boolean> {\n return super.delete(id, options).then((success) => {\n if (\n success &&\n // is record auth\n this.client.authStore.model?.id === id &&\n (this.client.authStore.model?.collectionId === this.collectionIdOrName ||\n this.client.authStore.model?.collectionName ===\n this.collectionIdOrName)\n ) {\n this.client.authStore.clear();\n }\n\n return success;\n });\n }\n\n // ---------------------------------------------------------------\n // Auth handlers\n // ---------------------------------------------------------------\n\n /**\n * Prepare successful collection authorization response.\n */\n protected authResponse<T = M>(responseData: any): RecordAuthResponse<T> {\n const record = this.decode(responseData?.record || {});\n\n this.client.authStore.save(responseData?.token, record as any);\n\n return Object.assign({}, responseData, {\n // normalize common fields\n token: responseData?.token || \"\",\n record: record as any as T,\n });\n }\n\n /**\n * Returns all available collection auth methods.\n *\n * @throws {ClientResponseError}\n */\n async listAuthMethods(options?: CommonOptions): Promise<AuthMethodsList> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-methods\", options)\n .then((responseData: any) => {\n return Object.assign({}, responseData, {\n // normalize common fields\n usernamePassword: !!responseData?.usernamePassword,\n emailPassword: !!responseData?.emailPassword,\n authProviders: Array.isArray(responseData?.authProviders)\n ? responseData?.authProviders\n : [],\n });\n });\n }\n\n /**\n * Authenticate a single auth collection record via its username/email and password.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n *\n * @throws {ClientResponseError}\n */\n async authWithPassword<T = M>(\n usernameOrEmail: string,\n password: string,\n options?: RecordOptions,\n ): Promise<RecordAuthResponse<T>>;\n\n /**\n * @deprecated\n * Consider using authWithPassword(usernameOrEmail, password, options?).\n */\n async authWithPassword<T = M>(\n usernameOrEmail: string,\n password: string,\n body?: any,\n query?: any,\n ): Promise<RecordAuthResponse<T>>;\n\n async authWithPassword<T = M>(\n usernameOrEmail: string,\n password: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<RecordAuthResponse<T>> {\n let options: any = {\n method: \"POST\",\n body: {\n identity: usernameOrEmail,\n password: password,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authWithPassword(usernameOrEmail, pass, body?, query?) is deprecated. Consider replacing it with authWithPassword(usernameOrEmail, pass, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-with-password\", options)\n .then((data) => this.authResponse<T>(data));\n }\n\n /**\n * Authenticate a single auth collection record with OAuth2 code.\n *\n * If you don't have an OAuth2 code you may also want to check `authWithOAuth2` method.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n * - the OAuth2 account data (eg. name, email, avatar, etc.)\n *\n * @throws {ClientResponseError}\n */\n async authWithOAuth2Code<T = M>(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectUrl: string,\n createData?: { [key: string]: any },\n options?: RecordOptions,\n ): Promise<RecordAuthResponse<T>>;\n\n /**\n * @deprecated\n * Consider using authWithOAuth2Code(provider, code, codeVerifier, redirectUrl, createdData, options?).\n */\n async authWithOAuth2Code<T = M>(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectUrl: string,\n createData?: { [key: string]: any },\n body?: any,\n query?: any,\n ): Promise<RecordAuthResponse<T>>;\n\n async authWithOAuth2Code<T = M>(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectUrl: string,\n createData?: { [key: string]: any },\n bodyOrOptions?: any,\n query?: any,\n ): Promise<RecordAuthResponse<T>> {\n let options: any = {\n method: \"POST\",\n body: {\n provider: provider,\n code: code,\n codeVerifier: codeVerifier,\n redirectUrl: redirectUrl,\n createData: createData,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authWithOAuth2Code(provider, code, codeVerifier, redirectUrl, createData?, body?, query?) is deprecated. Consider replacing it with authWithOAuth2Code(provider, code, codeVerifier, redirectUrl, createData?, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-with-oauth2\", options)\n .then((data) => this.authResponse<T>(data));\n }\n\n /**\n * @deprecated This form of authWithOAuth2 is deprecated.\n *\n * Please use `authWithOAuth2Code()` OR its simplified realtime version\n * as shown in https://pocketbase.io/docs/authentication/#oauth2-integration.\n */\n async authWithOAuth2<T = M>(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectUrl: string,\n createData?: { [key: string]: any },\n bodyParams?: { [key: string]: any },\n queryParams?: RecordOptions,\n ): Promise<RecordAuthResponse<T>>;\n\n /**\n * Authenticate a single auth collection record with OAuth2\n * **without custom redirects, deeplinks or even page reload**.\n *\n * This method initializes a one-off realtime subscription and will\n * open a popup window with the OAuth2 vendor page to authenticate.\n * Once the external OAuth2 sign-in/sign-up flow is completed, the popup\n * window will be automatically closed and the OAuth2 data sent back\n * to the user through the previously established realtime connection.\n *\n * You can specify an optional `urlCallback` prop to customize\n * the default url `window.open` behavior.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n * - the OAuth2 account data (eg. name, email, avatar, etc.)\n *\n * Example:\n *\n * ```js\n * const authData = await pb.collection(\"users\").authWithOAuth2({\n * provider: \"google\",\n * })\n * ```\n *\n * _Site-note_: when creating the OAuth2 app in the provider dashboard\n * you have to configure `https://yourdomain.com/api/oauth2-redirect`\n * as redirect URL.\n *\n * @throws {ClientResponseError}\n */\n async authWithOAuth2<T = M>(\n options: OAuth2AuthConfig,\n ): Promise<RecordAuthResponse<T>>;\n\n async authWithOAuth2<T = M>(...args: any): Promise<RecordAuthResponse<T>> {\n // fallback to legacy format\n if (args.length > 1 || typeof args?.[0] === \"string\") {\n console.warn(\n \"PocketBase: This form of authWithOAuth2() is deprecated and may get removed in the future. Please replace with authWithOAuth2Code() OR use the authWithOAuth2() realtime form as shown in https://pocketbase.io/docs/authentication/#oauth2-integration.\",\n );\n return this.authWithOAuth2Code<T>(\n args?.[0] || \"\",\n args?.[1] || \"\",\n args?.[2] || \"\",\n args?.[3] || \"\",\n args?.[4] || {},\n args?.[5] || {},\n args?.[6] || {},\n );\n }\n\n const config = args?.[0] || {};\n\n const authMethods = await this.listAuthMethods();\n\n const provider = authMethods.authProviders.find(\n (p) => p.name === config.provider,\n );\n if (!provider) {\n throw new ClientResponseError(\n new Error(`Missing or invalid provider \"${config.provider}\".`),\n );\n }\n\n const redirectUrl = this.client.buildUrl(\"/api/oauth2-redirect\");\n\n // initialize a one-off realtime service\n const realtime = new RealtimeService(this.client);\n\n // open a new popup window in case config.urlCallback is not set\n //\n // note: it is opened before the async call due to Safari restrictions\n // (see https://github.com/pocketbase/pocketbase/discussions/2429#discussioncomment-5943061)\n let eagerDefaultPopup: Window | null = null;\n if (!config.urlCallback) {\n eagerDefaultPopup = openBrowserPopup(undefined);\n }\n\n function cleanup() {\n eagerDefaultPopup?.close();\n realtime.unsubscribe();\n }\n\n return new Promise(async (resolve, reject) => {\n try {\n await realtime.subscribe(\"@oauth2\", async (e) => {\n const oldState = realtime.clientId;\n\n try {\n if (!e.state || oldState !== e.state) {\n throw new Error(\"State parameters don't match.\");\n }\n\n if (e.error || !e.code) {\n throw new Error(\n \"OAuth2 redirect error or missing code: \" + e.error,\n );\n }\n\n // clear the non SendOptions props\n const options = Object.assign({}, config);\n delete options.provider;\n delete options.scopes;\n delete options.createData;\n delete options.urlCallback;\n\n const authData = await this.authWithOAuth2Code<T>(\n provider.name,\n e.code,\n provider.codeVerifier,\n redirectUrl,\n config.createData,\n options,\n );\n\n resolve(authData);\n } catch (err) {\n reject(new ClientResponseError(err));\n }\n\n cleanup();\n });\n\n const replacements: { [key: string]: any } = {\n state: realtime.clientId,\n };\n if (config.scopes?.length) {\n replacements[\"scope\"] = config.scopes.join(\" \");\n }\n\n const url = this._replaceQueryParams(\n provider.authUrl + redirectUrl,\n replacements,\n );\n\n let urlCallback =\n config.urlCallback ||\n function (url: string) {\n if (eagerDefaultPopup) {\n eagerDefaultPopup.location.href = url;\n } else {\n // it could have been blocked due to its empty initial url,\n // try again...\n eagerDefaultPopup = openBrowserPopup(url);\n }\n };\n\n await urlCallback(url);\n } catch (err) {\n cleanup();\n reject(new ClientResponseError(err));\n }\n });\n }\n\n /**\n * Refreshes the current authenticated record instance and\n * returns a new token and record data.\n *\n * On success this method also automatically updates the client's AuthStore.\n *\n * @throws {ClientResponseError}\n */\n async authRefresh<T = M>(options?: RecordOptions): Promise<RecordAuthResponse<T>>;\n\n /**\n * @deprecated\n * Consider using authRefresh(options?).\n */\n async authRefresh<T = M>(body?: any, query?: any): Promise<RecordAuthResponse<T>>;\n\n async authRefresh<T = M>(\n bodyOrOptions?: any,\n query?: any,\n ): Promise<RecordAuthResponse<T>> {\n let options: any = {\n method: \"POST\",\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authRefresh(body?, query?) is deprecated. Consider replacing it with authRefresh(options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-refresh\", options)\n .then((data) => this.authResponse<T>(data));\n }\n\n /**\n * Sends auth record password reset request.\n *\n * @throws {ClientResponseError}\n */\n async requestPasswordReset(email: string, options?: CommonOptions): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using requestPasswordReset(email, options?).\n */\n async requestPasswordReset(email: string, body?: any, query?: any): Promise<boolean>;\n\n async requestPasswordReset(\n email: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n email: email,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestPasswordReset(email, body?, query?) is deprecated. Consider replacing it with requestPasswordReset(email, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-password-reset\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record password reset request.\n *\n * @throws {ClientResponseError}\n */\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n options?: CommonOptions,\n ): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using confirmPasswordReset(passwordResetToken, password, passwordConfirm, options?).\n */\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n body?: any,\n query?: any,\n ): Promise<boolean>;\n\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n token: passwordResetToken,\n password: password,\n passwordConfirm: passwordConfirm,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmPasswordReset(token, password, passwordConfirm, body?, query?) is deprecated. Consider replacing it with confirmPasswordReset(token, password, passwordConfirm, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-password-reset\", options)\n .then(() => true);\n }\n\n /**\n * Sends auth record verification email request.\n *\n * @throws {ClientResponseError}\n */\n async requestVerification(email: string, options?: CommonOptions): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using requestVerification(email, options?).\n */\n async requestVerification(email: string, body?: any, query?: any): Promise<boolean>;\n\n async requestVerification(\n email: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n email: email,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestVerification(email, body?, query?) is deprecated. Consider replacing it with requestVerification(email, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-verification\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record email verification request.\n *\n * If the current `client.authStore.model` matches with the auth record from the token,\n * then on success the `client.authStore.model.verified` will be updated to `true`.\n *\n * @throws {ClientResponseError}\n */\n async confirmVerification(\n verificationToken: string,\n options?: CommonOptions,\n ): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using confirmVerification(verificationToken, options?).\n */\n async confirmVerification(\n verificationToken: string,\n body?: any,\n query?: any,\n ): Promise<boolean>;\n\n async confirmVerification(\n verificationToken: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n token: verificationToken,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmVerification(token, body?, query?) is deprecated. Consider replacing it with confirmVerification(token, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-verification\", options)\n .then(() => {\n // on success manually update the current auth record verified state\n const payload = getTokenPayload(verificationToken);\n const model = this.client.authStore.model;\n if (\n model &&\n !model.verified &&\n model.id === payload.id &&\n model.collectionId === payload.collectionId\n ) {\n model.verified = true;\n this.client.authStore.save(this.client.authStore.token, model);\n }\n\n return true;\n });\n }\n\n /**\n * Sends an email change request to the authenticated record model.\n *\n * @throws {ClientResponseError}\n */\n async requestEmailChange(newEmail: string, options?: CommonOptions): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using requestEmailChange(newEmail, options?).\n */\n async requestEmailChange(newEmail: string, body?: any, query?: any): Promise<boolean>;\n\n async requestEmailChange(\n newEmail: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n newEmail: newEmail,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestEmailChange(newEmail, body?, query?) is deprecated. Consider replacing it with requestEmailChange(newEmail, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-email-change\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record's new email address.\n *\n * If the current `client.authStore.model` matches with the auth record from the token,\n * then on success the `client.authStore` will be cleared.\n *\n * @throws {ClientResponseError}\n */\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n options?: CommonOptions,\n ): Promise<boolean>;\n\n /**\n * @deprecated\n * Consider using confirmEmailChange(emailChangeToken, password, options?).\n */\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n body?: any,\n query?: any,\n ): Promise<boolean>;\n\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise<boolean> {\n let options: any = {\n method: \"POST\",\n body: {\n token: emailChangeToken,\n password: password,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmEmailChange(token, password, body?, query?) is deprecated. Consider replacing it with confirmEmailChange(token, password, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-email-change\", options)\n .then(() => {\n const payload = getTokenPayload(emailChangeToken);\n const model = this.client.authStore.model;\n if (\n model &&\n model.id === payload.id &&\n model.collectionId === payload.collectionId\n ) {\n this.client.authStore.clear();\n }\n\n return true;\n });\n }\n\n /**\n * Lists all linked external auth providers for the specified auth record.\n *\n * @throws {ClientResponseError}\n */\n async listExternalAuths(\n recordId: string,\n options?: CommonOptions,\n ): Promise<Array<ExternalAuthModel>> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\n this.baseCrudPath + \"/\" + encodeURIComponent(recordId) + \"/external-auths\",\n options,\n );\n }\n\n /**\n * Unlink a single external auth provider from the specified auth record.\n *\n * @throws {ClientResponseError}\n */\n async unlinkExternalAuth(\n recordId: string,\n provider: string,\n options?: CommonOptions,\n ): Promise<boolean> {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(\n this.baseCrudPath +\n \"/\" +\n encodeURIComponent(recordId) +\n \"/external-auths/\" +\n encodeURIComponent(provider),\n options,\n )\n .then(() => true);\n }\n\n // ---------------------------------------------------------------\n\n // very rudimentary url query params replacement because at the moment\n // URL (and URLSearchParams) doesn't seem to be fully supported in React Native\n //\n // note: for details behind some of the decode/encode parsing check https://unixpapa.com/js/querystring.html\n private _replaceQueryParams(\n url: string,\n replacements: { [key: string]: any } = {},\n ): string {\n let urlPath = url;\n let query = \"\";\n\n const queryIndex = url.indexOf(\"?\");\n if (queryIndex >= 0) {\n urlPath = url.substring(0, url.indexOf(\"?\"));\n query = url.substring(url.indexOf(\"?\") + 1);\n }\n\n const parsedParams: { [key: string]: string } = {};\n\n // parse the query parameters\n const rawParams = query.split(\"&\");\n for (const param of rawParams) {\n if (param == \"\") {\n continue;\n }\n\n const pair = param.split(\"=\");\n parsedParams[decodeURIComponent(pair[0].replace(/\\+/g, \" \"))] =\n decodeURIComponent((pair[1] || \"\").replace(/\\+/g, \" \"));\n }\n\n // apply the replacements\n for (let key in replacements) {\n if (!replacements.hasOwnProperty(key)) {\n continue;\n }\n\n if (replacements[key] == null) {\n delete parsedParams[key];\n } else {\n parsedParams[key] = replacements[key];\n }\n }\n\n // construct back the full query string\n query = \"\";\n for (let key in parsedParams) {\n if (!parsedParams.hasOwnProperty(key)) {\n continue;\n }\n\n if (query != \"\") {\n query += \"&\";\n }\n\n query +=\n encodeURIComponent(key.replace(/%20/g, \"+\")) +\n \"=\" +\n encodeURIComponent(parsedParams[key].replace(/%20/g, \"+\"));\n }\n\n return query != \"\" ? urlPath + \"?\" + query : urlPath;\n }\n}\n\nfunction openBrowserPopup(url?: string): Window | null {\n if (typeof window === \"undefined\" || !window?.open) {\n throw new ClientResponseError(\n new Error(\n `Not in a browser context - please pass a custom urlCallback function.`,\n ),\n );\n }\n\n let width = 1024;\n let height = 768;\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n // normalize window size\n width = width > windowWidth ? windowWidth : width;\n height = height > windowHeight ? windowHeight : height;\n\n let left = windowWidth / 2 - width / 2;\n let top = windowHeight / 2 - height / 2;\n\n // note: we don't use the noopener and noreferrer attributes since\n // for some reason browser blocks such windows then url is undefined/blank\n return window.open(\n url,\n \"popup_window\",\n \"width=\" +\n width +\n \",height=\" +\n height +\n \",top=\" +\n top +\n \",left=\" +\n left +\n \",resizable,menubar=no\",\n );\n}\n","import { CrudService } from \"@/services/utils/CrudService\";\nimport { CollectionModel } from \"@/services/utils/dtos\";\nimport { CommonOptions } from \"@/services/utils/options\";\n\nexport class CollectionService extends CrudService<CollectionModel> {\n /**\n * @inheritdoc\n */\n get baseCrudPath(): string {\n return \"/api/collections\";\n }\n\n /**\n * Imports the provided collections.\n *\n * If `deleteMissing` is `true`, all local collections and schema fields,\n * that are not present in the imported configuration, WILL BE DELETED\n * (including their related records data)!\n *\n * @throws {ClientResponseError}\n */\n async import(\n collections: Array<CollectionModel>,\n deleteMissing: boolean = false,\n options?: CommonOptions,\n ): Promise<true> {\n options = Object.assign(\n {\n method: \"PUT\",\n body: {\n collections: collections,\n deleteMissing: deleteMissing,\n },\n },\n options,\n );\n\n return this.client.send(this.baseCrudPath + \"/import\", options).then(() => true);\n }\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseService } from \"@/services/utils/BaseService\";\nimport { ListResult, LogModel } from \"@/services/utils/dtos\";\nimport { CommonOptions, ListOptions, LogStatsOptions } from \"@/services/utils/options\";\n\nexport interface HourlyStats {\n total: number;\n date: string;\n}\n\nexport class LogService extends BaseService {\n /**\n * Returns paginated logs list.\n *\n * @throws {ClientResponseError}\n */\n async getList(\n page = 1,\n perPage = 30,\n options?: ListOptions,\n ): Promise<ListResult<LogModel>> {\n options = Object.assign({ method: \"GET\" }, options);\n\n options.query = Object.assign(\n {\n page: page,\n perPage: perPage,\n },\n options.query,\n );\n\n return this.client.send(\"/api/logs\", options);\n }\n\n /**\n * Returns a single log by its id.\n *\n * If `id` is empty it will throw a 404 error.\n *\n * @throws {ClientResponseError}\n */\n async getOne(id: string, options?: CommonOptions): Promise<LogModel> {\n if (!id) {\n throw new ClientResponseError({\n url: this.client.buildUrl(\"/api/logs/\"),\n status: 404,\n response: {\n code: 404,\n message: \"Missing required log id.\",\n data: {},\n },\n });\n }\n\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/logs/\" + encodeURIComponent(id), options);\n }\n\n /**\n * Returns logs statistics.\n *\n * @throws {ClientResponseError}\n */\n async getStats(options?: LogStatsOptions): Promise<Array<HourlyStats>> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/logs/stats\", options);\n }\n}\n","import { BaseService } from \"@/services/utils/BaseService\";\nimport { CommonOptions } from \"@/services/utils/options\";\n\nexport interface HealthCheckResponse {\n code: number;\n message: string;\n data: { [key: string]: any };\n}\n\nexport class HealthService extends BaseService {\n /**\n * Checks the health status of the api.\n *\n * @throws {ClientResponseError}\n */\n async check(options?: CommonOptions): Promise<HealthCheckResponse> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/health\", options);\n }\n}\n","import { BaseService } from \"@/services/utils/BaseService\";\nimport { CommonOptions, FileOptions } from \"@/services/utils/options\";\n\nexport class FileService extends BaseService {\n /**\n * Builds and returns an absolute record file url for the provided filename.\n */\n getUrl(\n record: { [key: string]: any },\n filename: string,\n queryParams: FileOptions = {},\n ): string {\n if (\n !filename ||\n !record?.id ||\n !(record?.collectionId || record?.collectionName)\n ) {\n return \"\";\n }\n\n const parts = [];\n parts.push(\"api\");\n parts.push(\"files\");\n parts.push(encodeURIComponent(record.collectionId || record.collectionName));\n parts.push(encodeURIComponent(record.id));\n parts.push(encodeURIComponent(filename));\n\n let result = this.client.buildUrl(parts.join(\"/\"));\n\n if (Object.keys(queryParams).length) {\n // normalize the download query param for consistency with the Dart sdk\n if (queryParams.download === false) {\n delete queryParams.download;\n }\n\n const params = new URLSearchParams(queryParams);\n\n result += (result.includes(\"?\") ? \"&\" : \"?\") + params;\n }\n\n return result;\n }\n\n /**\n * Requests a new private file access token for the current auth model (admin or record).\n *\n * @throws {ClientResponseError}\n */\n async getToken(options?: CommonOptions): Promise<string> {\n options = Object.assign(\n {\n method: \"POST\",\n },\n options,\n );\n\n return this.client\n .send(\"/api/files/token\", options)\n .then((data) => data?.token || \"\");\n }\n}\n","import { BaseService } from \"@/services/utils/BaseService\";\nimport { CommonOptions } from \"@/services/utils/options\";\n\nexport interface BackupFileInfo {\n key: string;\n size: number;\n modified: string;\n}\n\nexport class BackupService extends BaseService {\n /**\n * Returns list with all available backup files.\n *\n * @throws {ClientResponseError}\n */\n async getFullList(options?: CommonOptions): Promise<Array<BackupFileInfo>> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/backups\", options);\n }\n\n /**\n * Initializes a new backup.\n *\n * @throws {ClientResponseError}\n */\n async create(basename: string, options?: CommonOptions): Promise<boolean> {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n name: basename,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/backups\", options).then(() => true);\n }\n\n /**\n * Uploads an existing backup file.\n *\n * Example:\n *\n * ```js\n * await pb.backups.upload({\n * file: new Blob([...]),\n * });\n * ```\n *\n * @throws {ClientResponseError}\n */\n async upload(\n bodyParams: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<boolean> {\n options = Object.assign(\n {\n method: \"POST\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client.send(\"/api/backups/upload\", options).then(() => true);\n }\n\n /**\n * Deletes a single backup file.\n *\n * @throws {ClientResponseError}\n */\n async delete(key: string, options?: CommonOptions): Promise<boolean> {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(`/api/backups/${encodeURIComponent(key)}`, options)\n .then(() => true);\n }\n\n /**\n * Initializes an app data restore from an existing backup.\n *\n * @throws {ClientResponseError}\n */\n async restore(key: string, options?: CommonOptions): Promise<boolean> {\n options = Object.assign(\n {\n method: \"POST\",\n },\n options,\n );\n\n return this.client\n .send(`/api/backups/${encodeURIComponent(key)}/restore`, options)\n .then(() => true);\n }\n\n /**\n * Builds a download url for a single existing backup using an\n * admin file token and the backup file key.\n *\n * The file token can be generated via `pb.files.getToken()`.\n */\n getDownloadUrl(token: string, key: string): string {\n return this.client.buildUrl(\n `/api/backups/${encodeURIComponent(key)}?token=${encodeURIComponent(token)}`,\n );\n }\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseAuthStore } from \"@/stores/BaseAuthStore\";\nimport { LocalAuthStore } from \"@/stores/LocalAuthStore\";\nimport { SettingsService } from \"@/services/SettingsService\";\nimport { AdminService } from \"@/services/AdminService\";\nimport { RecordService } from \"@/services/RecordService\";\nimport { CollectionService } from \"@/services/CollectionService\";\nimport { LogService } from \"@/services/LogService\";\nimport { RealtimeService } from \"@/services/RealtimeService\";\nimport { HealthService } from \"@/services/HealthService\";\nimport { FileService } from \"@/services/FileService\";\nimport { BackupService } from \"@/services/BackupService\";\nimport { RecordModel } from \"@/services/utils/dtos\";\nimport {\n SendOptions,\n FileOptions,\n normalizeUnknownQueryParams,\n} from \"@/services/utils/options\";\n\nexport interface BeforeSendResult {\n [key: string]: any; // for backward compatibility\n url?: string;\n options?: { [key: string]: any };\n}\n\n/**\n * PocketBase JS Client.\n */\nexport default class Client {\n /**\n * The base PocketBase backend url address (eg. 'http://127.0.0.1.8090').\n */\n baseUrl: string;\n\n /**\n * Hook that get triggered right before sending the fetch request,\n * allowing you to inspect and modify the url and request options.\n *\n * For list of the possible options check https://developer.mozilla.org/en-US/docs/Web/API/fetch#options\n *\n * You can return a non-empty result object `{ url, options }` to replace the url and request options entirely.\n *\n * Example:\n * ```js\n * client.beforeSend = function (url, options) {\n * options.headers = Object.assign({}, options.headers, {\n * 'X-Custom-Header': 'example',\n * });\n *\n * return { url, options }\n * };\n * ```\n */\n beforeSend?: (\n url: string,\n options: SendOptions,\n ) => BeforeSendResult | Promise<BeforeSendResult>;\n\n /**\n * Hook that get triggered after successfully sending the fetch request,\n * allowing you to inspect/modify the response object and its parsed data.\n *\n * Returns the new Promise resolved `data` that will be returned to the client.\n *\n * Example:\n * ```js\n * client.afterSend = function (response, data) {\n * if (response.status != 200) {\n * throw new ClientResponseError({\n * url: response.url,\n * status: response.status,\n * response: { ... },\n * });\n * }\n *\n * return data;\n * };\n * ```\n */\n afterSend?: (response: Response, data: any) => any;\n\n /**\n * Optional language code (default to `en-US`) that will be sent\n * with the requests to the server as `Accept-Language` header.\n */\n lang: string;\n\n /**\n * A replaceable instance of the local auth store service.\n */\n authStore: BaseAuthStore;\n\n /**\n * An instance of the service that handles the **Settings APIs**.\n */\n readonly settings: SettingsService;\n\n /**\n * An instance of the service that handles the **Admin APIs**.\n */\n readonly admins: AdminService;\n\n /**\n * An instance of the service that handles the **Collection APIs**.\n */\n readonly collections: CollectionService;\n\n /**\n * An instance of the service that handles the **File APIs**.\n */\n readonly files: FileService;\n\n /**\n * An instance of the service that handles the **Log APIs**.\n */\n readonly logs: LogService;\n\n /**\n * An instance of the service that handles the **Realtime APIs**.\n */\n readonly realtime: RealtimeService;\n\n /**\n * An instance of the service that handles the **Health APIs**.\n */\n readonly health: HealthService;\n\n /**\n * An instance of the service that handles the **Backup APIs**.\n */\n readonly backups: BackupService;\n\n private cancelControllers: { [key: string]: AbortController } = {};\n private recordServices: { [key: string]: RecordService } = {};\n private enableAutoCancellation: boolean = true;\n\n constructor(baseUrl = \"/\", authStore?: BaseAuthStore | null, lang = \"en-US\") {\n this.baseUrl = baseUrl;\n this.lang = lang;\n this.authStore = authStore || new LocalAuthStore();\n\n // services\n this.admins = new AdminService(this);\n this.collections = new CollectionService(this);\n this.files = new FileService(this);\n this.logs = new LogService(this);\n this.settings = new SettingsService(this);\n this.realtime = new RealtimeService(this);\n this.health = new HealthService(this);\n this.backups = new BackupService(this);\n }\n\n /**\n * Returns the RecordService associated to the specified collection.\n *\n * @param {string} idOrName\n * @return {RecordService}\n */\n collection<M = RecordModel>(idOrName: string): RecordService<M> {\n if (!this.recordServices[idOrName]) {\n this.recordServices[idOrName] = new RecordService(this, idOrName);\n }\n\n return this.recordServices[idOrName];\n }\n\n /**\n * Globally enable or disable auto cancellation for pending duplicated requests.\n */\n autoCancellation(enable: boolean): Client {\n this.enableAutoCancellation = !!enable;\n\n return this;\n }\n\n /**\n * Cancels single request by its cancellation key.\n */\n cancelRequest(requestKey: string): Client {\n if (this.cancelControllers[requestKey]) {\n this.cancelControllers[requestKey].abort();\n delete this.cancelControllers[requestKey];\n }\n\n return this;\n }\n\n /**\n * Cancels all pending requests.\n */\n cancelAllRequests(): Client {\n for (let k in this.cancelControllers) {\n this.cancelControllers[k].abort();\n }\n\n this.cancelControllers = {};\n\n return this;\n }\n\n /**\n * Constructs a filter expression with placeholders populated from a parameters object.\n *\n * Placeholder parameters are defined with the `{:paramName}` notation.\n *\n * The following parameter values are supported:\n *\n * - `string` (_single quotes are autoescaped_)\n * - `number`\n * - `boolean`\n * - `Date` object (_stringified into the PocketBase datetime format_)\n * - `null`\n * - everything else is converted to a string using `JSON.stringify()`\n *\n * Example:\n *\n * ```js\n * pb.collection(\"example\").getFirstListItem(pb.filter(\n * 'title ~ {:title} && created >= {:created}',\n * { title: \"example\", created: new Date()}\n * ))\n * ```\n */\n filter(raw: string, params?: { [key: string]: any }): string {\n if (!params) {\n return raw;\n }\n\n for (let key in params) {\n let val = params[key];\n switch (typeof val) {\n case \"boolean\":\n case \"number\":\n val = \"\" + val;\n break;\n case \"string\":\n val = \"'\" + val.replace(/'/g, \"\\\\'\") + \"'\";\n break;\n default:\n if (val === null) {\n val = \"null\";\n } else if (val instanceof Date) {\n val = \"'\" + val.toISOString().replace(\"T\", \" \") + \"'\";\n } else {\n val = \"'\" + JSON.stringify(val).replace(/'/g, \"\\\\'\") + \"'\";\n }\n }\n raw = raw.replaceAll(\"{:\" + key + \"}\", val);\n }\n\n return raw;\n }\n\n /**\n * Legacy alias of `pb.files.getUrl()`.\n */\n getFileUrl(\n record: { [key: string]: any },\n filename: string,\n queryParams: FileOptions = {},\n ): string {\n return this.files.getUrl(record, filename, queryParams);\n }\n\n /**\n * Builds a full client url by safely concatenating the provided path.\n */\n buildUrl(path: string): string {\n let url = this.baseUrl;\n\n // construct an absolute base url if in a browser environment\n if (\n typeof window !== \"undefined\" &&\n !!window.location &&\n !url.startsWith(\"https://\") &&\n !url.startsWith(\"http://\")\n ) {\n url = window.location.origin?.endsWith(\"/\")\n ? window.location.origin.substring(0, window.location.origin.length - 1)\n : window.location.origin || \"\";\n\n if (!this.baseUrl.startsWith(\"/\")) {\n url += window.location.pathname || \"/\";\n url += url.endsWith(\"/\") ? \"\" : \"/\";\n }\n\n url += this.baseUrl;\n }\n\n // concatenate the path\n if (path) {\n url += url.endsWith(\"/\") ? \"\" : \"/\"; // append trailing slash if missing\n url += path.startsWith(\"/\") ? path.substring(1) : path;\n }\n\n return url;\n }\n\n /**\n * Sends an api http request.\n *\n * @throws {ClientResponseError}\n */\n async send<T = any>(path: string, options: SendOptions): Promise<T> {\n options = this.initSendOptions(path, options);\n\n // build url + path\n let url = this.buildUrl(path);\n\n if (this.beforeSend) {\n const result = Object.assign({}, await this.beforeSend(url, options));\n if (\n typeof result.url !== \"undefined\" ||\n typeof result.options !== \"undefined\"\n ) {\n url = result.url || url;\n options = result.options || options;\n } else if (Object.keys(result).length) {\n // legacy behavior\n options = result as SendOptions;\n console?.warn &&\n console.warn(\n \"Deprecated format of beforeSend return: please use `return { url, options }`, instead of `return options`.\",\n );\n }\n }\n\n // serialize the query parameters\n if (typeof options.query !== \"undefined\") {\n const query = this.serializeQueryParams(options.query);\n if (query) {\n url += (url.includes(\"?\") ? \"&\" : \"?\") + query;\n }\n delete options.query;\n }\n\n // ensures that the json body is serialized\n if (\n this.getHeader(options.headers, \"Content-Type\") == \"application/json\" &&\n options.body &&\n typeof options.body !== \"string\"\n ) {\n options.body = JSON.stringify(options.body);\n }\n\n const fetchFunc = options.fetch || fetch;\n\n // send the request\n return fetchFunc(url, options)\n .then(async (response) => {\n let data: any = {};\n\n try {\n data = await response.json();\n } catch (_) {\n // all api responses are expected to return json\n // with the exception of the realtime event and 204\n }\n\n if (this.afterSend) {\n data = await this.afterSend(response, data);\n }\n\n if (response.status >= 400) {\n throw new ClientResponseError({\n url: response.url,\n status: response.status,\n data: data,\n });\n }\n\n return data as T;\n })\n .catch((err) => {\n // wrap to normalize all errors\n throw new ClientResponseError(err);\n });\n }\n\n /**\n * Shallow copy the provided object and takes care to initialize\n * any options required to preserve the backward compatability.\n *\n * @param {SendOptions} options\n * @return {SendOptions}\n */\n private initSendOptions(path: string, options: SendOptions): SendOptions {\n options = Object.assign({ method: \"GET\" } as SendOptions, options);\n\n // auto convert the body to FormData, if needed\n options.body = this.convertToFormDataIfNeeded(options.body);\n\n // move unknown send options as query parameters\n normalizeUnknownQueryParams(options);\n\n // requestKey normalizations for backward-compatibility\n // ---\n options.query = Object.assign({}, options.params, options.query);\n if (typeof options.requestKey === \"undefined\") {\n if (options.$autoCancel === false || options.query.$autoCancel === false) {\n options.requestKey = null;\n } else if (options.$cancelKey || options.query.$cancelKey) {\n options.requestKey = options.$cancelKey || options.query.$cancelKey;\n }\n }\n // remove the deprecated special cancellation params from the other query params\n delete options.$autoCancel;\n delete options.query.$autoCancel;\n delete options.$cancelKey;\n delete options.query.$cancelKey;\n // ---\n\n // add the json header, if not explicitly set\n // (for FormData body the Content-Type header should be skipped since the boundary is autogenerated)\n if (\n this.getHeader(options.headers, \"Content-Type\") === null &&\n !this.isFormData(options.body)\n ) {\n options.headers = Object.assign({}, options.headers, {\n \"Content-Type\": \"application/json\",\n });\n }\n\n // add Accept-Language header, if not explicitly set\n if (this.getHeader(options.headers, \"Accept-Language\") === null) {\n options.headers = Object.assign({}, options.headers, {\n \"Accept-Language\": this.lang,\n });\n }\n\n // check if Authorization header can be added\n if (\n // has valid token\n this.authStore.token &&\n // auth header is not explicitly set\n this.getHeader(options.headers, \"Authorization\") === null\n ) {\n options.headers = Object.assign({}, options.headers, {\n Authorization: this.authStore.token,\n });\n }\n\n // handle auto cancelation for duplicated pending request\n if (this.enableAutoCancellation && options.requestKey !== null) {\n const requestKey = options.requestKey || (options.method || \"GET\") + path;\n\n delete options.requestKey;\n\n // cancel previous pending requests\n this.cancelRequest(requestKey);\n\n const controller = new AbortController();\n this.cancelControllers[requestKey] = controller;\n options.signal = controller.signal;\n }\n\n return options;\n }\n\n /**\n * Converts analyzes the provided body and converts it to FormData\n * in case a plain object with File/Blob values is used.\n */\n private convertToFormDataIfNeeded(body: any): any {\n if (\n typeof FormData === \"undefined\" ||\n typeof body === \"undefined\" ||\n typeof body !== \"object\" ||\n body === null ||\n this.isFormData(body) ||\n !this.hasBlobField(body)\n ) {\n return body;\n }\n\n const form = new FormData();\n\n for (const key in body) {\n const val = body[key];\n\n if (typeof val === \"object\" && !this.hasBlobField({ data: val })) {\n // send json-like values as jsonPayload to avoid the implicit string value normalization\n let payload: { [key: string]: any } = {};\n payload[key] = val;\n form.append(\"@jsonPayload\", JSON.stringify(payload));\n } else {\n // in case of mixed string and file/blob\n const normalizedVal = Array.isArray(val) ? val : [val];\n for (let v of normalizedVal) {\n form.append(key, v);\n }\n }\n }\n\n return form;\n }\n\n /**\n * Checks if the submitted body object has at least one Blob/File field.\n */\n private hasBlobField(body: { [key: string]: any }): boolean {\n for (const key in body) {\n const values = Array.isArray(body[key]) ? body[key] : [body[key]];\n for (const v of values) {\n if (\n (typeof Blob !== \"undefined\" && v instanceof Blob) ||\n (typeof File !== \"undefined\" && v instanceof File)\n ) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Extracts the header with the provided name in case-insensitive manner.\n * Returns `null` if no header matching the name is found.\n */\n private getHeader(\n headers: { [key: string]: string } | undefined,\n name: string,\n ): string | null {\n headers = headers || {};\n name = name.toLowerCase();\n\n for (let key in headers) {\n if (key.toLowerCase() == name) {\n return headers[key];\n }\n }\n\n return null;\n }\n\n /**\n * Loosely checks if the specified body is a FormData instance.\n */\n private isFormData(body: any): boolean {\n return (\n body &&\n // we are checking the constructor name because FormData\n // is not available natively in some environments and the\n // polyfill(s) may not be globally accessible\n (body.constructor.name === \"FormData\" ||\n // fallback to global FormData instance check\n // note: this is needed because the constructor.name could be different in case of\n // custom global FormData implementation, eg. React Native on Android/iOS\n (typeof FormData !== \"undefined\" && body instanceof FormData))\n );\n }\n\n /**\n * Serializes the provided query parameters into a query string.\n */\n private serializeQueryParams(params: { [key: string]: any }): string {\n const result: Array<string> = [];\n for (const key in params) {\n if (params[key] === null) {\n // skip null query params\n continue;\n }\n\n const value = params[key];\n const encodedKey = encodeURIComponent(key);\n\n if (Array.isArray(value)) {\n // repeat array params\n for (const v of value) {\n result.push(encodedKey + \"=\" + encodeURIComponent(v));\n }\n } else if (value instanceof Date) {\n result.push(encodedKey + \"=\" + encodeURIComponent(value.toISOString()));\n } else if (typeof value !== null && typeof value === \"object\") {\n result.push(encodedKey + \"=\" + encodeURIComponent(JSON.stringify(value)));\n } else {\n result.push(encodedKey + \"=\" + encodeURIComponent(value));\n }\n }\n\n return result.join(\"&\");\n }\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// 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](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\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};","// 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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"17\":\"ab23b5d1\",\"140\":\"76e7a0eb\",\"416\":\"81088480\",\"436\":\"0bff2c18\",\"503\":\"3e05a233\",\"528\":\"9bc08611\",\"656\":\"4b70bc46\",\"704\":\"26d31669\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"17\":\"b70abfd3\",\"436\":\"f86d06c0\"}[chunkId] + \".chunk.css\";\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))","var inProgress = {};\nvar dataWebpackPrefix = \"nile-dashboard-react:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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};","__webpack_require__.p = \"./\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t590: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"17\":1,\"436\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t590: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknile_dashboard_react\"] = self[\"webpackChunknile_dashboard_react\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","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 <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\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 \"<BrowserRouter> 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 <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\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 \"<HashRouter> 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 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 <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\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 <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\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 method = replace ? 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 </RouterContext.Consumer>\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 <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\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 <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\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 const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\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 <Link {...props} />;\n }}\n </RouterContext.Consumer>\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 ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { isValidElementType } from 'react-is';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/\nReact.createContext();\n\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\n\nvar LOADABLE_SHARED = {\n initialChunks: {}\n};\n\nvar STATUS_PENDING = 'PENDING';\nvar STATUS_RESOLVED = 'RESOLVED';\nvar STATUS_REJECTED = 'REJECTED';\n\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor,\n resolve: function resolve() {\n return undefined;\n },\n chunkName: function chunkName() {\n return undefined;\n }\n };\n }\n\n return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n var LoadableWithChunkExtractor = function LoadableWithChunkExtractor(props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n\n if (Component.displayName) {\n LoadableWithChunkExtractor.displayName = Component.displayName + \"WithChunkExtractor\";\n }\n\n return LoadableWithChunkExtractor;\n};\n\nvar identity = function identity(v) {\n return v;\n};\n\nfunction createLoadable(_ref) {\n var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n /**\n * Cachekey represents the component to be loaded\n * if key changes - component has to be reloaded\n * @param props\n * @returns {null|Component}\n */\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n\n return 'static';\n }\n /**\n * Resolves loaded `module` to a specific `Component\n * @param module\n * @param props\n * @param Loadable\n * @returns Component\n */\n\n\n function resolve(module, props, Loadable) {\n var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module);\n\n if (options.resolveComponent && !isValidElementType(Component)) {\n throw new Error(\"resolveComponent returned something that is not a React component!\");\n }\n\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n }\n\n var InnerLoadable =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n\n return _extends({}, state, {\n cacheKey: cacheKey,\n // change of a key triggers loading state automatically\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n\n function InnerLoadable(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n\n ctor.requireAsync(props)[\"catch\"](function () {\n return null;\n }); // So we can require now the module synchronously\n\n _this.loadSync();\n\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n // Only perform this synchronous loading if the component has not\n // been marked with no SSR, else we risk hydration mismatches\n\n\n if (options.ssr !== false && ( // is ready - was loaded in this session\n ctor.isReady && ctor.isReady(props) || // is ready - was loaded during SSR process\n ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n _this.loadSync();\n }\n\n return _this;\n }\n\n var _proto = InnerLoadable.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true; // retrieve loading promise from a global cache\n\n var cachedPromise = this.getCache(); // if promise exists, but rejected - clear cache\n\n if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {\n this.setCache();\n } // component might be resolved synchronously in the constructor\n\n\n if (this.state.loading) {\n this.loadAsync();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component has to be reloaded on cacheKey change\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.loadAsync();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n }\n /**\n * returns a cache key for the current props\n * @returns {Component|string}\n */\n ;\n\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props);\n }\n /**\n * access the persistent cache\n */\n ;\n\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n }\n /**\n * sets the cache value. If called without value sets it as undefined\n */\n ;\n\n _proto.setCache = function setCache(value) {\n if (value === void 0) {\n value = undefined;\n }\n\n cache[this.getCacheKey()] = value;\n };\n\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n }\n /**\n * Synchronously loads component\n * target module is expected to already exists in the module cache\n * or be capable to resolve synchronously (webpack target=node)\n */\n ;\n\n _proto.loadSync = function loadSync() {\n // load sync is expecting component to be in the \"loading\" state already\n // sounds weird, but loading=true is the initial state of InnerLoadable\n if (!this.state.loading) return;\n\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, this.props, Loadable);\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n console.error('loadable-components: failed to synchronously load component, which expected to be available', {\n fileName: ctor.resolve(this.props),\n chunkName: ctor.chunkName(this.props),\n error: error ? error.message : error\n });\n this.state.error = error;\n }\n }\n /**\n * Asynchronously loads a component.\n */\n ;\n\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n\n var promise = this.resolveAsync();\n promise.then(function (loadedModule) {\n var result = resolve(loadedModule, _this3.props, {\n Loadable: Loadable\n });\n\n _this3.safeSetState({\n result: result,\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n return _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n return promise;\n }\n /**\n * Asynchronously resolves(not loads) a component.\n * Note - this function does not change the state\n */\n ;\n\n _proto.resolveAsync = function resolveAsync() {\n var _this4 = this;\n\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n var promise = this.getCache();\n\n if (!promise) {\n promise = ctor.requireAsync(props);\n promise.status = STATUS_PENDING;\n this.setCache(promise);\n promise.then(function () {\n promise.status = STATUS_RESOLVED;\n }, function (error) {\n console.error('loadable-components: failed to asynchronously load component', {\n fileName: ctor.resolve(_this4.props),\n chunkName: ctor.chunkName(_this4.props),\n error: error ? error.message : error\n });\n promise.status = STATUS_REJECTED;\n });\n }\n\n return promise;\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n\n if (options.suspense) {\n var cachedPromise = this.getCache() || this.loadAsync();\n\n if (cachedPromise.status === STATUS_PENDING) {\n throw this.loadAsync();\n }\n }\n\n if (error) {\n throw error;\n }\n\n var fallback = propFallback || options.fallback || null;\n\n if (loading) {\n return fallback;\n }\n\n return _render({\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n\n return InnerLoadable;\n }(React.Component);\n\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n });\n Loadable.displayName = 'Loadable'; // In future, preload could use `<link rel=\"preload\">`\n\n Loadable.preload = function (props) {\n ctor.requireAsync(props);\n };\n\n Loadable.load = function (props) {\n return ctor.requireAsync(props);\n };\n\n return Loadable;\n }\n\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\n\nfunction defaultResolveComponent(loadedModule) {\n // eslint-disable-next-line no-underscore-dangle\n return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable =\n/*#__PURE__*/\ncreateLoadable({\n defaultResolveComponent: defaultResolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n}),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 =\n/*#__PURE__*/\ncreateLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n props = _ref.props;\n\n if (props.children) {\n return props.children(result);\n }\n\n return null;\n }\n}),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace,\n _ref$chunkLoadingGlob = _ref.chunkLoadingGlobal,\n chunkLoadingGlobal = _ref$chunkLoadingGlob === void 0 ? '__LOADABLE_LOADED_CHUNKS__' : _ref$chunkLoadingGlob;\n\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n\n var requiredChunks = null;\n\n if (BROWSER) {\n var id = getRequiredChunkKey(namespace);\n var dataElement = document.getElementById(id);\n\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n var extElement = document.getElementById(id + \"_ext\");\n\n if (extElement) {\n var _JSON$parse = JSON.parse(extElement.textContent),\n namedChunks = _JSON$parse.namedChunks;\n\n namedChunks.forEach(function (chunkName) {\n LOADABLE_SHARED.initialChunks[chunkName] = true;\n });\n } else {\n // version mismatch\n throw new Error('loadable-component: @loadable/server does not match @loadable/component');\n }\n }\n }\n\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n\n var resolved = false;\n return new Promise(function (resolve) {\n window[chunkLoadingGlobal] = window[chunkLoadingGlobal] || [];\n var loadedChunks = window[chunkLoadingGlobal];\n var originalPush = loadedChunks.push.bind(loadedChunks);\n\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.indexOf(chunk) > -1;\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n }\n }\n\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n\n checkReadyState();\n }).then(done);\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\n\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };\n","import loadable from '@loadable/component';\n\nconst pages = [\n {\n path: '/connect',\n exact: true,\n layout: \"connect\",\n requiresAuth: true,\n component: loadable(() => import('./pages/Admin/Main'))\n },\n {\n path: '/',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Admin/Login/login.jsx'))\n },\n {\n path: '/register',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Admin/Login/register.jsx'))\n },\n {\n path: '/wait',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Admin/Login/wait.jsx'))\n },\n {\n path: '/docs',\n exact: true,\n layout: \"default\",\n requiresAuth: true,\n component: loadable(() => import('./pages/Admin/docs'))\n },\n {\n path: '/test',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n {\n path: '/verify',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n {\n path: '/help',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n {\n path: '/support',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n {\n path: '/ticket',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n {\n path: '/reset-password',\n exact: true,\n layout: \"default\",\n requiresAuth: false,\n component: loadable(() => import('./pages/Victim/Main'))\n },\n]\n\nexport default pages;\n","const useSlots = (children, components) => {\n const slots = children ? Array.isArray(children) ? children : [children] : [];\n const fComponents = {};\n\n slots.forEach(slot => {\n let name;\n let component;\n\n Object.keys(components).forEach(componentName => {\n const com = components[componentName];\n\n if (com === slot.type) {\n name = componentName;\n component = slot;\n }\n });\n\n if (component) {\n fComponents[name] = component;\n }\n });\n\n return fComponents;\n};\n\nexport default useSlots;\n","import React from \"react\";\nimport classnames from \"classnames\";\n\nconst LayoutHeader = ({ className, children, ...props }) => {\n return (\n <div className={classnames('layout-header', className)} {...props}>\n {children}\n </div>\n );\n};\n\nexport default LayoutHeader;\n","import React from \"react\";\nimport classnames from \"classnames\";\n\nconst LayoutBody = ({ className, style, children, ...props }) => {\n return (\n <main\n id={props.id}\n className={classnames(\n 'layout-content layout-content-main',\n className\n )}\n style={props.style}\n >\n {children}\n </main>\n );\n};\n\nexport default LayoutBody;\n","import React from \"react\";\nimport classnames from \"classnames\";\n\nconst LayoutFooter = ({ className, children, ...props }) => {\n return (\n <div className={classnames('layout-footer', className)} {...props}>\n {children}\n </div>\n );\n};\n\nexport default LayoutFooter;\n","export default class Sidenav {\n /**\n * Sticky Sidebar Constructor.\n * @constructor\n * @param {HTMLElement|String} sidenav - The sidenav element selector.\n * @param {Object} options - The options of sidenav.\n */\n constructor(sidenav, options = {}) {\n // Sidebar element query if there's no one, throw error.\n this.sidenav = (typeof sidenav === 'string' ) ? document.querySelector(sidenav) : sidenav;\n\n // Define options and apply defaults\n this.options = Object.assign({}, {\n classes: {\n wrapper: 'sidenav',\n compact: 'sn-compact',\n hidden: 'sn-hidden',\n drawerClose: 'sn-drawer-off',\n drawerOpen: 'sn-drawer-on',\n autoExpand: 'sn-auto-expand',\n autoExpandOn: 'sn-auto-expand-on',\n autoExpandOff: 'sn-auto-expand-off',\n enterActive: 'enter-active',\n leaveActive: 'leave-active',\n pageOverlay: 'sn-page-overlay'\n },\n dimensions: {\n default: this.sidenav.getAttribute('data-sn-width') || 280,\n compact: this.sidenav.getAttribute('data-sn-compact-width') || 88,\n drawer: this.sidenav.getAttribute('data-sn-drawer-width') || 280\n },\n relativeTo: 'html',\n pattern: null,\n compact: false,\n compactAutoExpandOnHover: false,\n compactAutoExpandDelay: 300,\n compactSideContentSelector: '.layout-content-main',\n drawer: false,\n // drawerTopSpace: 0,\n // drawerTopSpaceSelector: false,\n drawerPageOverlay: true,\n drawerCloseOnEsc: true,\n drawerClose: undefined,\n trigger: '.sn-trigger',\n\n // triggerMode is active only when drawer mode is off\n triggerMode: 'toggle', // compact, toggle\n animation: true,\n animationDuration: 150,\n direction: 'left'\n }, options);\n\n this.callbacks = {\n onChange: []\n };\n\n this.timeouts = {\n 'sidenav': {enter: undefined, leave: undefined},\n 'overlay': {enter: undefined, leave: undefined},\n };\n this.events = {};\n this.drawerInitiated = false;\n\n if (this.sidenav) {\n this.initialize();\n }\n }\n\n initialize() {\n const self = this;\n\n // Remove any inline styles\n this.sidenav.removeAttribute('style')\n\n // Add default sidenav class to sidebar\n this.sidenav.classList.add(this.options.classes.wrapper);\n\n // Define dimensions\n self.updateWidth()\n self.handleDrawerBreakpoint(self)();\n\n // Apply styling to sidenav on first print\n document.addEventListener('DOMContentLoaded', function (e) {\n // Define dimensions\n self.updateWidth()\n\n // Handle Drawer mode for responsive\n if (!self.options.drawer && self.options.drawerBreakpoint !== undefined && self.options.drawerBreakpoint > 0) {\n self.handleDrawerBreakpoint(self)(e);\n }\n });\n\n // Handle events when resizing\n window.addEventListener('resize', function (e) {\n // Handle Drawer mode for responsive\n if (self.options.drawerBreakpoint !== undefined && self.options.drawerBreakpoint > 0) {\n self.handleDrawerBreakpoint(self)(e);\n }\n });\n\n // Compact state\n if (this.options.compact) {\n this.compact();\n }\n\n // Activate Drawer mode\n if (this.options.drawer) {\n this.initDrawer();\n }\n\n if (this.options.compactAutoExpandOnHover && !this.options.drawer) {\n this.initAutoExpand();\n }\n\n // Setup trigger element\n // if (this.options.trigger && this.options.trigger.length > 0 && !this.options.compactAutoExpandOnHover) {\n if (this.options.trigger && this.options.trigger.length > 0) {\n this.initTrigger();\n }\n\n // Initiate drawer closer event\n if (this.options.drawerClose !== undefined) {\n this.initDrawerCloser();\n }\n }\n\n // Register a callback to be triggered when the sidenav state changes\n onChange(cb) {\n if (typeof cb === 'function') {\n this.callbacks.onChange.push(cb);\n }\n }\n // Runs all callbacks of a certain type\n triggerCallback(type, ...args) {\n if (this.callbacks[type] !== undefined) {\n this.callbacks[type].forEach(cb => {\n cb(this.state(), ...args);\n })\n }\n }\n\n getCurrentWidth() {\n return this.options.compact ? this.options.dimensions.compact : this.options.dimensions.default;\n }\n\n updateWidth() {\n this.addStyleToElem(this.sidenav, {\n 'width': `${this.getCurrentWidth()}px`,\n 'max-width': `${this.getCurrentWidth()}px`,\n })\n }\n handleDrawerBreakpoint (self) {\n return (e) => {\n // enable drawer if breakpoint is the same or smaller than the window width\n if (self.options.drawerBreakpoint >= window.innerWidth) {\n if (!self.drawerInitiated) {\n self.wasInCompact = self.hasClass(self.sidenav, self.options.classes.compact)\n self.initDrawer();\n self.options.drawer = true;\n self.drawerInitiated = true\n }\n } else {\n if (self.drawerInitiated) {\n self.wasInCompact = self.hasClass(self.sidenav, self.options.classes.compact)\n self.destroyDrawer();\n\n if (self.wasInCompact) {\n self.compact();\n self.triggerCallback('onChange', 'compact');\n } else {\n self.expand();\n self.triggerCallback('onChange', 'expand');\n }\n\n self.options.drawer = false;\n self.drawerInitiated = false;\n }\n }\n };\n }\n\n initDrawerCloser() {\n const drawerCloser = ('string' === typeof this.options.drawerClose) ? document.querySelector(this.options.drawerClose) : this.options.drawerClose;\n\n if (drawerCloser) {\n drawerCloser.addEventListener('click', (e) => {\n this.animate('sidenav', this.sidenav, 'leave');\n this.closeDrawer();\n this.removePageOverlay();\n });\n }\n }\n\n initTrigger() {\n const triggerButton = ('string' === typeof this.options.trigger) ? document.querySelector(this.options.trigger) : this.options.trigger;\n\n if (triggerButton) {\n triggerButton.addEventListener('click', (e) => {\n // If drawer mode is on and drawer is closed, open the drawer\n if (this.options.drawer) {\n if (this.state() === 'drawerClose') {\n this.animate('sidenav', this.sidenav, 'enter');\n this.openDrawer();\n this.createPageOverlay();\n } else {\n this.animate('sidenav', this.sidenav, 'leave');\n this.closeDrawer();\n this.removePageOverlay();\n }\n } else {\n // Handle toggling compact mode\n if (this.options.triggerMode === 'compact') {\n if (this.state() === 'expand') {\n this.compact();\n } else {\n this.expand();\n }\n } else {\n // Handle toggle mode\n if (this.state() === 'hidden') {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n });\n }\n }\n\n applyPosition() {\n let relativeTo = document.querySelector(this.options.relativeTo)\n if (!relativeTo) {\n relativeTo = document.querySelector('html')\n }\n\n this.addStyleToElem(this.sidenav, {\n [this.options.direction]: '0px',\n height: `${relativeTo.offsetHeight - this.sidenav.offsetTop}px`\n })\n }\n\n removePosition() {\n this.delStyleFromElem(this.sidenav, [this.options.direction, 'height'])\n }\n\n initAutoExpand() {\n // Add default classes\n this.sidenav.classList.add(this.options.classes.autoExpand);\n this.sidenav.classList.add(this.options.classes.autoExpandOff);\n\n let mouseEnter, mouseLeave;\n\n // On mouse enter\n this.sidenav.addEventListener(\"mouseenter\", e => {\n if (this.state() !== 'compact') {\n return;\n }\n\n clearTimeout(mouseLeave)\n\n mouseEnter = setTimeout(() => {\n // update width\n this.options.compact = false;\n this.addStyleToElem(document.querySelector(this.options.compactSideContentSelector), {\n [`margin-${this.options.direction}`]: `${this.options.dimensions.compact}px`\n })\n this.applyPosition();\n this.autoExpandOn();\n this.addStyleToElem(\n this.sidenav.querySelector('.sn-wrap'), {\n 'width': `${this.options.dimensions.default}px`,\n }\n )\n this.addStyleToElem(this.sidenav, {\n 'width': `${this.options.dimensions.default}px`,\n 'max-width': `${this.options.dimensions.default}px`,\n })\n }, this.options.compactAutoExpandDelay);\n });\n\n // On mouse leave\n this.sidenav.addEventListener(\"mouseleave\", e => {\n if (this.state() !== 'compact') {\n return;\n }\n\n clearTimeout(mouseEnter)\n\n if (this.hasClass(this.sidenav, this.options.classes.autoExpandOn)) {\n this.options.compact = true;\n\n this.addStyleToElem(this.sidenav, {\n 'width': `${this.options.dimensions.compact}px`,\n 'max-width': `${this.options.dimensions.compact}px`,\n })\n setTimeout(() => {\n this.removePosition();\n this.delStyleFromElem(this.sidenav.querySelector('.sn-wrap'), ['width', 'max-width'])\n this.delStyleFromElem(document.querySelector(this.options.compactSideContentSelector), [\n `margin-${this.options.direction}`\n ])\n this.autoExpandOff();\n }, this.options.animationDuration)\n }\n });\n }\n\n destroyDrawer() {\n this.sidenav.classList.remove(this.options.classes.drawerClose)\n this.sidenav.classList.remove(this.options.classes.drawerOpen)\n this.removePageOverlay()\n this.delStyleFromElem(this.sidenav, ['transform'])\n\n if (this.events.drawermousedownevent !== undefined) {\n window.removeEventListener('mousedown', this.drawer.drawermousedownevent)\n }\n\n if (this.events.drawerkeydownevent !== undefined) {\n window.removeEventListener('keydown', this.drawer.drawerkeydownevent)\n }\n }\n\n getTransform(openState, forCompact) {\n const sidebarWidth = forCompact ? this.options.dimensions.compact : this.options.dimensions.default\n\n if (openState) {\n return this.options.direction === 'right' ? `translateX(0px)` : `translateX(0px)`;\n }\n\n return this.options.direction === 'right' ? `translateX(${sidebarWidth}px)` : `translateX(-${sidebarWidth}px)`;\n }\n\n initDrawer() {\n // Define direction for element in drawer mode only\n this.addStyleToElem(this.sidenav, {\n [this.options.direction]: 0,\n })\n\n // Make the drawer closed by default\n this.closeDrawer();\n\n // Force to close the drawer when click outside\n this.events.drawermousedownevent = window.addEventListener('mousedown', e => {\n if (!this.sidenav.contains(e.target) && this.state() === 'drawerOpen') {\n this.animate('sidenav', this.sidenav, 'leave');\n this.closeDrawer();\n this.removePageOverlay();\n }\n });\n\n // Allow escape key\n if (this.options.drawerCloseOnEsc) {\n this.events.drawerkeydownevent = window.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n this.animate('sidenav', this.sidenav, 'leave');\n this.closeDrawer();\n this.removePageOverlay();\n }\n });\n }\n }\n\n openDrawer() {\n this.wasInCompact = this.hasClass(this.sidenav, this.options.classes.compact)\n\n // make sure to expand if in compact mode but not configured to be compact\n if (this.wasInCompact && this.options.compact === false) {\n this.expand();\n }\n\n this.addStyleToElem(this.sidenav, {\n 'transform': this.getTransform(true)\n })\n this.replaceClass(this.sidenav, this.options.classes.drawerClose, this.options.classes.drawerOpen);\n this.triggerCallback('onChange', 'drawerOpen');\n }\n\n closeDrawer() {\n if (this.wasInCompact) {\n this.compact();\n }\n\n // Define direction for element in drawer mode only\n this.addStyleToElem(this.sidenav, {\n 'transform': this.getTransform(false)\n })\n this.replaceClass(this.sidenav, this.options.classes.drawerOpen, this.options.classes.drawerClose);\n this.triggerCallback('onChange', 'drawerClose');\n }\n\n hide() {\n this.sidenav.classList.add(this.options.classes.hidden);\n this.triggerCallback('onChange', 'hidden');\n }\n\n show() {\n this.sidenav.classList.remove(this.options.classes.hidden);\n this.triggerCallback('onChange', 'shown');\n }\n\n compact() {\n if (!this.hasClass(this.sidenav, this.options.classes.compact)) {\n this.delStyleFromElem(this.sidenav.querySelector('.sn-wrap'), ['width', 'max-width'])\n this.addStyleToElem(this.sidenav, {\n 'width': `${this.options.dimensions.compact}px`,\n 'max-width': `${this.options.dimensions.compact}px`\n })\n this.sidenav.classList.add(this.options.classes.compact);\n this.triggerCallback('onChange', 'compact');\n }\n }\n\n expand() {\n if (this.hasClass(this.sidenav, this.options.classes.compact)) {\n this.delStyleFromElem(this.sidenav.querySelector('.sn-wrap'), ['width', 'max-width'])\n this.addStyleToElem(this.sidenav, {\n 'width': `${this.options.dimensions.default}px`,\n 'max-width': `${this.options.dimensions.default}px`\n })\n this.sidenav.classList.remove(this.options.classes.compact);\n this.triggerCallback('onChange', 'expand');\n }\n }\n\n autoExpandOn() {\n this.replaceClass(this.sidenav, this.options.classes.autoExpandOff, this.options.classes.autoExpandOn);\n this.triggerCallback('onChange', 'expand');\n }\n\n autoExpandOff() {\n this.replaceClass(this.sidenav, this.options.classes.autoExpandOn, this.options.classes.autoExpandOff);\n this.triggerCallback('onChange', 'compact');\n }\n\n state() {\n if (this.hasClass(this.sidenav, this.options.classes.drawerClose)) {\n return 'drawerClose'\n }\n if (this.hasClass(this.sidenav, this.options.classes.drawerOpen)) {\n return 'drawerOpen'\n }\n if (this.hasClass(this.sidenav, this.options.classes.hidden)) {\n return 'hidden'\n }\n if (this.hasClass(this.sidenav, this.options.classes.compact)) {\n return 'compact'\n }\n if (!this.hasClass(this.sidenav, this.options.classes.compact)) {\n return 'expand'\n }\n }\n\n isCompact() {\n if (this.options.compactAutoExpandOnHover) {\n return this.hasClass(this.sidenav, this.options.classes.compact) && !this.hasClass(this.sidenav, this.options.classes.autoExpandOn);\n } else {\n return this.hasClass(this.sidenav, this.options.classes.compact);\n }\n }\n\n /**\n * Create page overlay\n */\n createPageOverlay() {\n if (this.options.drawerPageOverlay) {\n const el = document.createElement('div');\n el.className = this.options.classes.pageOverlay;\n document.body.appendChild(el);\n this.animate('overlay', el, 'enter')\n }\n }\n\n /**\n * Remove page overlay\n */\n removePageOverlay() {\n if (this.options.drawerPageOverlay) {\n const el = document.querySelector(`.${this.options.classes.pageOverlay}`);\n if (el !== null) {\n // Apply animation if enabled and remove the element after animation is completed.\n this.animate('overlay', el, 'leave', () => {\n document.body.removeChild(el);\n });\n\n // Otherwise remove the element immediately.\n if (!this.options.animation) {\n document.body.removeChild(el);\n }\n }\n }\n }\n\n /**\n * Apply animation behavior to element\n *\n * @param {String} key - Unique key for each element\n * @param {Element} el - Element selector\n * @param {('enter'|'leave')} state - Define animation state\n * @param {Function=} callback - callback function to be executed after animation is completed.\n */\n animate(key, el, state ,callback) {\n if (el !== null && this.options.animation) {\n const animationClass = {\n enter: this.options.classes.enterActive,\n leave: this.options.classes.leaveActive,\n };\n const animationNewState = animationClass[state];\n\n // if timeout state is enter, clear leave\n clearTimeout(state === 'enter' ? this.timeouts[key].leave : this.timeouts[key].enter);\n\n el.classList.add(animationNewState);\n\n // reset animation state\n const classToRem = state === 'enter' ? this.options.classes.leaveActive : this.options.classes.enterActive;\n const classToAdd = state === 'enter' ? this.options.classes.enterActive : this.options.classes.leaveActive;\n if (this.hasClass(el, classToRem)) {\n el.classList.remove(classToRem);\n }\n el.classList.add(classToAdd);\n\n this.addStyleToElem(el, {\n 'animation-duration': `${this.options.animationDuration}ms`,\n 'transition-duration': `${this.options.animationDuration}ms`\n });\n\n // Initiate animation with timeout\n this.timeouts[key][state] = setTimeout(() => {\n el.classList.remove(animationNewState);\n this.delStyleFromElem(el, ['animation-duration', 'transition-duration']);\n if (callback && typeof callback === 'function') {\n callback();\n }\n }, this.options.animationDuration);\n }\n }\n\n /**\n * Check if class exists\n * @param {Element} element - Element selector\n * @param {String} className - Class name you want to check\n * @returns {boolean}\n */\n hasClass(element, className) {\n return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;\n }\n\n /**\n * Replace old class with new one\n * @param {Element} el - Element selector\n * @param {String} oldClass\n * @param {String} newClass\n */\n replaceClass(el, oldClass, newClass) {\n el.classList.remove(oldClass);\n el.classList.add(newClass);\n }\n\n addStyleToElem(el, style) {\n Object.keys(style).forEach(key => {\n el.style[key] = style[key];\n });\n }\n\n delStyleFromElem(el, properties) {\n properties.forEach(key => {\n el.style.removeProperty(key);\n });\n }\n}\n","import React from 'react';\n\nexport default React.createContext({})\n","export default class sidenavMenu {\n constructor(selector, options, sidenav) {\n // Sidebar element query if there's no one, throw error.\n this.sidemenu = (typeof selector === 'string') ? document.querySelector(selector) : selector;\n if (!this.sidemenu) {\n console.warn('side menu', selector, 'is not found')\n return\n }\n\n this.options = Object.assign({}, {\n classes: {\n menuItem: 'sn-menu-item-wrap',\n menuItemHasSub: 'sn-menu-item-has-sub',\n subMenu: 'sn-menu-item-sub',\n activeMenuItem: 'is-active',\n menuItemSubMenuOpen: 'sn-sub-menu-open',\n menuItemSubMenuClose: 'sn-sub-menu-close',\n menuItemContent: 'sn-menu-item-content'\n },\n }, options);\n\n this.sidenav = sidenav || {\n onChange () {},\n isCompact () {\n return false;\n }\n };\n this.menuItems = [];\n\n setTimeout(() => {\n this.init();\n }, 0)\n }\n\n init() {\n this.addStyleToElem(this.sidemenu, {\n visibility: 'hidden'\n })\n // Refresh local state with menu items\n this.refresh();\n\n this.addStyleToElem(this.sidemenu, {\n visibility: 'visible'\n })\n\n // Update sub menus visibility based on sidebar changes\n if (this.sidenav) {\n this.sidenav.onChange((changeType) => {\n this.menuItems.filter(n => n.sub).forEach((n) => {\n this.updateMenuItemState(n.item, n.sub);\n });\n });\n }\n\n // Close all sub menus if clicked outside\n window.addEventListener('click', e => {\n const ctx = this;\n\n // Go through open sub menus only\n if (ctx.sidenav && ctx.sidenav.isCompact()) {\n this.menuItems.forEach((n) => {\n if (n.sub && ctx.isSubmenuOpen(n.item) && !n.sub.contains(e.target) && !n.item.contains(e.target)) {\n ctx.hideSubmenu(n.item, n.sub);\n }\n });\n }\n });\n\n // Handle each menu item\n if (!this.sidemenu.classList.contains('side-menu-compact') && !this.sidemenu.classList.contains('side-menu-mini')) {\n this.menuItems.forEach((n) => {\n const ctx = this,\n menuItem = n.item,\n subMenu = n.sub;\n\n // register click handler for menu items\n menuItem.querySelector(`.${this.options.classes.menuItemContent}`).addEventListener('click', (e) => {\n if (subMenu) {\n this.menuItemClicked(e, menuItem, subMenu);\n }\n\n if (typeof ctx.options.onItemClick === 'function') {\n ctx.options.onItemClick(e, menuItem);\n }\n });\n\n // Handle situations when there is a sub menu\n if (subMenu) {\n // Handle inital state of menuItem and subMenu, by checking\n // if a subMenu item is active, then make the menuItem active\n // Otherwise, hide the sub menu.\n this.updateMenuItemState(menuItem, subMenu);\n\n // register click handler for sub menu items\n subMenu.querySelectorAll(`.${this.options.classes.menuItem}`).forEach(subMenuItem => {\n subMenuItem.querySelector(`.${this.options.classes.menuItemContent}`).addEventListener('click', (e) => {\n if (ctx.sidenav.isCompact()) {\n ctx.hideSubmenu(menuItem, subMenu);\n }\n\n if (typeof ctx.options.onItemClick === 'function') {\n ctx.options.onItemClick(e, subMenuItem);\n }\n });\n });\n }\n });\n }\n }\n\n refresh() {\n this.sidemenu.querySelectorAll(`.${this.options.classes.menuItem}`).forEach((menuItem => {\n const subMenu = menuItem.querySelector(`.${this.options.classes.subMenu}`);\n if (subMenu) {\n const subMenuItems = subMenu.querySelector(`.${this.options.classes.menuItem}`);\n subMenu.setAttribute('data-sub-height', subMenu.offsetHeight)\n this.addClassesToElem(menuItem, [this.options.classes.menuItemHasSub])\n this.menuItems.push({\n item: menuItem,\n sub: subMenuItems ? subMenu : null\n });\n }\n }));\n }\n\n subMenuHasActiveItem(subMenu) {\n return subMenu && subMenu.querySelector(`.${this.options.classes.menuItem}.${this.options.classes.activeMenuItem}`) !== null;\n }\n\n hideSubmenu(menuItem, subMenu) {\n this.addClassesToElem(menuItem, [this.options.classes.menuItemSubMenuClose]);\n this.removeClassesFromElem(menuItem, [this.options.classes.menuItemSubMenuOpen]);\n\n if (!this.subMenuHasActiveItem(subMenu)) {\n this.removeClassesFromElem(menuItem, [this.options.classes.activeMenuItem]);\n }\n\n this.addStyleToElem(subMenu, {height: `0px`, display: 'none'});\n }\n\n showSubmenu(menuItem, subMenu) {\n this.addClassesToElem(menuItem, [this.options.classes.menuItemSubMenuOpen, this.options.classes.activeMenuItem]);\n this.removeClassesFromElem(menuItem, [this.options.classes.menuItemSubMenuClose]);\n\n // subMenu.getAttribute('data-sub-height')\n this.addStyleToElem(subMenu, {height: `auto`, display: 'block'});\n // this.addStyleToElem(subMenu, {height: `${subMenu.offsetHeight}px`, visibility: 'visible'});\n }\n\n isSubmenuOpen(menuItem) {\n return menuItem.className.split(' ').indexOf(this.options.classes.menuItemSubMenuOpen) > -1;\n }\n\n updateMenuItemState(menuItem, subMenu) {\n // Indicate sub menu is active state\n const subMenuIsActive = this.subMenuHasActiveItem(subMenu);\n\n // Hide sub menu if the subMenu it self is not active or if the sidebar is in compact mode\n if (!subMenuIsActive || this.sidenav.isCompact()) {\n this.hideSubmenu(menuItem, subMenu);\n }\n\n // Show the submenu if it has an active item and the sidenav is not compact\n if (subMenuIsActive && !this.sidenav.isCompact()) {\n this.showSubmenu(menuItem, subMenu);\n }\n\n // Apply active state to menu item if a sub menu item is active\n if (subMenuIsActive) {\n this.addClassesToElem(menuItem, [this.options.classes.activeMenuItem]);\n }\n }\n\n menuItemClicked(e, menuItem, subMenu) {\n const ctx = this;\n const menuItemOpen = ctx.isSubmenuOpen(menuItem);\n\n // hide all menu items by default if in compact mode\n this.menuItems.forEach((n) => {\n if (n.sub && ctx.sidenav.isCompact()) {\n ctx.hideSubmenu(n.item, n.sub);\n }\n });\n\n // Handle updating the clicked menu item\n if (menuItemOpen) {\n ctx.hideSubmenu(menuItem, subMenu);\n } else {\n ctx.showSubmenu(menuItem, subMenu);\n }\n\n e.preventDefault();\n }\n\n addStyleToElem(elem, style) {\n Object.keys(style).forEach(key => {\n elem.style[key] = style[key];\n });\n }\n\n addClassesToElem(elem, classes) {\n classes.forEach(_class => {\n elem.classList.add(_class);\n });\n }\n\n removeClassesFromElem(elem, classes) {\n classes.forEach(_class => {\n elem.classList.remove(_class);\n });\n }\n}\n","import React, {useContext, useState, useEffect, useRef} from 'react';\nimport classnames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport {useLocation, NavLink} from \"react-router-dom\";\nimport SideMenuLib from '../libs/SideMenu.lib'\nimport SidenavContext from '../context/sidenav';\nimport '../scss/_menu.scss'\n\nconst propTypes = {\n dark: PropTypes.bool,\n gutter: PropTypes.bool,\n itemsIndicators: PropTypes.bool,\n size: PropTypes.string\n}\n\nconst defaultProps = {\n dark: false,\n gutter: true,\n itemsIndicators: true,\n};\n\nconst ItemsGroup = ({ isSubMenu, className, children}) => {\n return (\n <div className={classnames('sn-menu-list', className, { 'sn-menu-item-sub': isSubMenu })}>\n {children}\n </div>\n );\n};\n\nconst Title = ({children}) => {\n return (\n <div className={\"sn-section-header\"}>\n <div className={\"sn-section-header-title\"}>{children}</div>\n </div>\n );\n};\n\n// Menu Item\nconst Item = ({ isActive, to, href, icon, children }) => {\n const [active, setActive] = useState(isActive || false);\n const location = useLocation();\n const slots = Array.isArray(children) ? children : [children];\n const menuItemText = slots.find(slot => slot.type !== ItemsGroup);\n const subMenu = slots.find(slot => slot.type === ItemsGroup);\n\n useEffect(() => {\n setActive(location.pathname === to);\n }, [location, to]);\n\n const GoTo = ({ children, to, href }) => {\n if (to) {\n return (\n <NavLink to={to} className={`sn-menu-item-content`}>\n {children}\n </NavLink>\n );\n }\n\n return (\n <a href={href} className={`sn-menu-item-content`}>\n {children}\n </a>\n );\n }\n\n return (\n <div className={`sn-menu-item-wrap${active ? ' is-active' : ''}`}>\n <GoTo to={to} href={href}>\n {icon ? <span className=\"icon sn-menu-item-icon icon-s-24\">{icon}</span> : ''}\n <span className=\"sn-menu-item-name\">{menuItemText}</span>\n </GoTo>\n\n {subMenu}\n </div>\n );\n};\n\nconst Menu = ({ className, children, sidenav, ...props }) => {\n const sidenavContext = useContext(SidenavContext);\n const SideMenuRef = useRef(null);\n\n const defineSize = () => {\n const sizes = {\n default: null,\n small: 'side-menu-sm',\n large: 'side-menu-lg',\n };\n return sizes[props.size] || sizes.default;\n }\n\n useEffect(() => {\n const sidenav = sidenavContext.sidenav;\n\n // If sidenav is initiated\n if (sidenav) {\n const sideMenu = new SideMenuLib(SideMenuRef.current, {}, sidenav);\n\n sidenav.onChange((state, newState) => {\n if (newState === 'expand') {\n // make side menu not compact\n sideMenu.sidemenu.classList.remove('side-menu-mini');\n }\n\n if (newState === 'compact') {\n sideMenu.sidemenu.classList.add('side-menu-mini');\n // make side menu compact\n }\n });\n\n // If the sidenav mode is compact, add side-menu-mini to the side menu\n if (sidenav.options.compact) {\n sideMenu.sidemenu.classList.add('side-menu-mini');\n }\n\n }\n }, [sidenavContext.sidenav]);\n\n return (\n <div\n id=\"sn-menu\"\n ref={SideMenuRef}\n className={\n classnames(\n 'side-menu',\n {\n 'side-menu-on-dark': props.dark,\n 'side-menu-no-gutter': !props.gutter,\n 'side-menu-item-no-bg': !props.itemsIndicators,\n },\n defineSize(),\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nMenu.propTypes = propTypes;\nMenu.defaultProps = defaultProps;\n\nexport default Object.assign(Menu, {\n ItemsGroup, Title, Item\n});\n","import React, {useEffect, useRef, useState} from 'react';\nimport classnames from \"classnames\";\nimport PropTypes from 'prop-types';\nimport Sidenav from '../libs/SideNav.lib'\nimport SidenavContext from '../context/sidenav';\nimport NavMenu from './NavMenu'\nimport '../scss/_sidenav.scss'\n\nconst propTypes = {\n compact: PropTypes.bool,\n compactAutoExpandOnHover: PropTypes.bool,\n compactAutoExpandDelay: PropTypes.number,\n drawer: PropTypes.bool,\n direction: PropTypes.string,\n drawerPageOverlay: PropTypes.bool,\n drawerCloseOnEsc: PropTypes.bool,\n drawerClose: PropTypes.string,\n trigger: PropTypes.string,\n triggerMode: PropTypes.string,\n animation: PropTypes.bool,\n animationDuration: PropTypes.number,\n width: PropTypes.number,\n compactWidth: PropTypes.number\n}\n\nconst Header = ({ className, children }) => {\n return (\n <div className={classnames('sn-header', className)}>\n {children}\n </div>\n );\n};\n\nconst Body = ({ className, children }) => {\n return (\n <div className={classnames('sn-content', className)}>\n {children}\n </div>\n );\n};\n\nconst Footer = ({ className, children }) => {\n return (\n <div className={classnames('sn-footer', className)}>\n {children}\n </div>\n );\n};\n\nconst Nav = ({\n className,\n children,\n compact = false,\n compactAutoExpandOnHover = false,\n compactAutoExpandDelay = 300,\n drawer = false,\n direction = 'left',\n drawerPageOverlay = true,\n drawerCloseOnEsc= true,\n trigger = '.sn-trigger',\n triggerMode = 'toggle',\n animation = true,\n animationDuration= 150,\n width = 278,\n compactWidth = 96,\n}) => {\n const [initiated, setInitiated] = useState(false);\n const [instance, setInstance] = useState(null);\n const sidenavRef = useRef(null);\n\n useEffect(() => {\n if (!initiated) {\n const sideNav = new Sidenav(sidenavRef.current, {\n compact,\n compactAutoExpandOnHover,\n compactAutoExpandDelay,\n drawer,\n direction,\n drawerPageOverlay,\n drawerCloseOnEsc,\n trigger,\n triggerMode,\n animation,\n animationDuration\n });\n setInitiated(true);\n\n if (!instance) {\n setInstance(sideNav);\n }\n }\n }, [\n initiated,\n instance,\n compact,\n compactAutoExpandOnHover,\n compactAutoExpandDelay,\n drawer,\n direction,\n drawerPageOverlay,\n drawerCloseOnEsc,\n trigger,\n triggerMode,\n animation,\n animationDuration\n ]);\n\n return (\n <SidenavContext.Provider value={{sidenav: instance}}>\n <aside\n ref={sidenavRef}\n data-sn-width={width}\n data-sn-compact-width={compactWidth}\n className={classnames('layout-content-fit', className)}\n >\n <div className=\"sn-wrap h-100\">\n {children}\n </div>\n </aside>\n </SidenavContext.Provider>\n );\n};\n\nNav.propTypes = propTypes;\n\nexport default Object.assign(Nav, {\n Header,\n Body,\n Footer,\n Menu: NavMenu\n});","import React from \"react\";\nimport classnames from \"classnames\";\nimport useSlots from \"../../hooks/useSlots\";\nimport { LayoutHeader, Nav, LayoutBody, LayoutFooter } from './slots'\nimport './layout.scss'\n\nconst Layout = ({children, className, ...props}) => {\n const {\n layoutHeader,\n nav,\n layoutBody,\n layoutFooter,\n } = useSlots(children, {layoutHeader: LayoutHeader, nav: Nav, layoutBody: LayoutBody, layoutFooter: LayoutFooter})\n\n return (\n <div\n className={classnames(\n className,\n 'layout-wrapper layout-content-horizontal',\n props.boxed ? 'container' : '',\n )}\n >\n {layoutHeader}\n <div\n className={classnames(\n className,\n 'layout-content layout-content-vertical'\n )}\n >\n {nav}\n {layoutBody}\n </div>\n {layoutFooter}\n </div>\n )\n}\n\nexport default Object.assign(Layout, {\n Header: LayoutHeader,\n Body: LayoutBody,\n Footer: LayoutFooter,\n Nav: Nav\n});\n","export default class themeSwitch {\n constructor(el, options = {}) {\n this.options = Object.assign({}, {\n altThemeSelector: 'alt'\n }, options);\n\n this.el = ('string' === typeof el ) ? document.querySelector(el) : el;\n\n if (this.el) {\n this.initialize();\n }\n }\n\n initialize() {\n const htmlCL = document.getElementsByTagName('html')[0].classList;\n let isAlt = false;\n\n\n if (localStorage.getItem(\"is-alt-theme\") === 'true') {\n htmlCL.add(this.options.altThemeSelector)\n }\n\n if (localStorage.getItem(\"is-alt-theme\") === 'false') {\n htmlCL.remove(this.options.altThemeSelector)\n }\n\n // Check if Html tag has the 'alt' theme selector\n isAlt = htmlCL.contains(this.options.altThemeSelector);\n\n // Show switch icon passed on 'isAlt' data attribute\n this.el.querySelectorAll('.theme-switch-icon').forEach(icon => {\n if (isAlt) {\n if (icon.dataset.hasOwnProperty('isAlt')) {\n icon.style.display = 'flex';\n } else {\n icon.style.display = 'none';\n }\n } else {\n if (icon.dataset.hasOwnProperty('isAlt')) {\n icon.style.display = 'none';\n } else {\n icon.style.display = 'flex';\n }\n }\n });\n\n this.el.addEventListener('click', (e) => {\n isAlt = htmlCL.contains(this.options.altThemeSelector);\n this.el.classList.add('theme-switch-animate');\n\n this.el.querySelectorAll('.theme-switch-icon').forEach(icon => {\n if (isAlt) {\n htmlCL.remove(this.options.altThemeSelector);\n localStorage.setItem('is-alt-theme', 'false');\n\n if (!icon.dataset.hasOwnProperty('isAlt')) {\n icon.style.display = 'flex';\n } else {\n icon.style.display = 'none';\n }\n\n } else {\n htmlCL.add(this.options.altThemeSelector);\n localStorage.setItem('is-alt-theme', 'true');\n\n if (icon.dataset.hasOwnProperty('isAlt')) {\n icon.style.display = 'flex';\n } else {\n icon.style.display = 'none';\n }\n }\n })\n\n setTimeout(() => {\n this.el.classList.remove('theme-switch-animate');\n }, 200)\n })\n\n document.querySelector('body').classList.remove('invisible');\n }\n}\n","import React, {useEffect, useRef} from \"react\";\nimport themeSwitch from './ThemeSwitchLib';\n\nconst ThemeSwitch = ({ ...props }) => {\n const ThemeSwitchRef = useRef(null);\n\n useEffect(() => {\n new themeSwitch('.theme-switch', {\n altThemeSelector: props.altThemeSelector || 'alt'\n });\n }, [props.altThemeSelector])\n\n return (\n <button ref={ThemeSwitchRef} type=\"button\" className=\"theme-switch\">\n <div className=\"theme-switch-track\" />\n <div className=\"theme-switch-pointer\">\n\n <div className=\"theme-switch-icon text-amber-900\">\n <svg style={{ width: '12px', height: '12px' }} viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3.828 5.243L2.343 3.757a1 1 0 0 1 1.414-1.414l1.486 1.485a5.027 5.027 0 0 0-1.415 1.415zM7 3.1V1a1 1 0 1 1 2 0v2.1a5.023 5.023 0 0 0-2 0zm3.757.728l1.486-1.485a1 1 0 1 1 1.414 1.414l-1.485 1.486a5.027 5.027 0 0 0-1.415-1.415zM12.9 7H15a1 1 0 0 1 0 2h-2.1a5.023 5.023 0 0 0 0-2zm-.728 3.757l1.485 1.486a1 1 0 1 1-1.414 1.414l-1.486-1.485a5.027 5.027 0 0 0 1.415-1.415zM9 12.9V15a1 1 0 0 1-2 0v-2.1a5.023 5.023 0 0 0 2 0zm-3.757-.728l-1.486 1.485a1 1 0 0 1-1.414-1.414l1.485-1.486a5.027 5.027 0 0 0 1.415 1.415zM3.1 9H1a1 1 0 1 1 0-2h2.1a5.023 5.023 0 0 0 0 2zM8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"\n fillRule=\"evenodd\" />\n </svg>\n </div>\n\n <div className=\"theme-switch-icon text-cerulean-500\" data-is-alt>\n <svg style={{ width: '12px', height: '12px' }} viewBox=\"0 0 17 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.914 0a6.874 6.874 0 0 0-1.26 3.972c0 3.875 3.213 7.017 7.178 7.017.943 0 1.843-.178 2.668-.5C15.423 13.688 12.34 16 8.704 16 4.174 16 .5 12.41.5 7.982.5 3.814 3.754.389 7.914 0z\"\n fillRule=\"evenodd\" />\n </svg>\n </div>\n </div>\n </button>\n )\n}\n\nexport default ThemeSwitch;\n","import React from \"react\";\nimport {Layout} from \"../@dlex/components\";\n\nconst Default = ({children}) => {\n\n return (\n <Layout>\n <Layout.Header>\n {/* Top Navbar */}\n </Layout.Header>\n {/* Main Content */}\n <Layout.Body id={\"main-content\"}>\n {children}\n </Layout.Body>\n {/* Side Navigation */}\n </Layout>\n )\n}\n\nexport default Default;\n","import React from \"react\";\nimport {Layout} from \"../@dlex/components\";\n\nconst BlankLayout = ({children}) => {\n return (\n <> {children} </>\n\n )\n}\n\nexport default BlankLayout;\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarBrand = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n const Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, bsPrefix)\n });\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","import classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n const offset = `offset${dimension[0].toUpperCase()}${dimension.slice(1)}`;\n const value = elem[offset];\n const margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nconst collapseStyles = {\n [EXITED]: 'collapse',\n [EXITING]: 'collapsing',\n [ENTERING]: 'collapsing',\n [ENTERED]: 'collapse show'\n};\nconst defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nconst Collapse = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n className,\n children,\n dimension = 'height',\n getDimensionValue = getDefaultDimensionValue,\n ...props\n}, ref) => {\n /* Compute dimension */\n const computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n const handleEnter = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = '0';\n }, onEnter), [computedDimension, onEnter]);\n const handleEntering = useMemo(() => createChainedFunction(elem => {\n const scroll = `scroll${computedDimension[0].toUpperCase()}${computedDimension.slice(1)}`;\n elem.style[computedDimension] = `${elem[scroll]}px`;\n }, onEntering), [computedDimension, onEntering]);\n const handleEntered = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onEntered), [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n const handleExit = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = `${getDimensionValue(computedDimension, elem)}px`;\n triggerBrowserReflow(elem);\n }, onExit), [onExit, getDimensionValue, computedDimension]);\n const handleExiting = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onExiting), [computedDimension, onExiting]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting,\n childRef: children.ref,\n children: (state, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n })\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import * as React from 'react'; // TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import * as React from 'react';\nimport { useContext } from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarCollapse = /*#__PURE__*/React.forwardRef(({\n children,\n bsPrefix,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Collapse, {\n in: !!(context && context.expanded),\n ...props,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: bsPrefix,\n children: children\n })\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n label: 'Toggle navigation'\n};\nconst NavbarToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n label,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n const {\n onToggle,\n expanded\n } = useContext(NavbarContext) || {};\n const handleClick = useEventCallback(e => {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed'),\n children: children || /*#__PURE__*/_jsx(\"span\", {\n className: `${bsPrefix}-icon`\n })\n });\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport SelectableContext from './SelectableContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarText = createWithBsPrefix('navbar-text', {\n Component: 'span'\n});\nconst defaultProps = {\n expand: true,\n variant: 'light',\n collapseOnSelect: false\n};\nconst Navbar = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n bsPrefix: initialBsPrefix,\n expand,\n variant,\n bg,\n fixed,\n sticky,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'nav',\n expanded,\n onToggle,\n onSelect,\n collapseOnSelect,\n ...controlledProps\n } = useUncontrolled(props, {\n expanded: 'onToggle'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n const handleCollapse = useCallback((...args) => {\n onSelect == null ? void 0 : onSelect(...args);\n\n if (collapseOnSelect && expanded) {\n onToggle == null ? void 0 : onToggle(false);\n }\n }, [onSelect, collapseOnSelect, expanded, onToggle]); // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n\n let expandClass = `${bsPrefix}-expand`;\n if (typeof expand === 'string') expandClass = `${expandClass}-${expand}`;\n const navbarContext = useMemo(() => ({\n onToggle: () => onToggle == null ? void 0 : onToggle(!expanded),\n bsPrefix,\n expanded: !!expanded\n }), [bsPrefix, expanded, onToggle]);\n return /*#__PURE__*/_jsx(NavbarContext.Provider, {\n value: navbarContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleCollapse,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, bsPrefix, expand && expandClass, variant && `${bsPrefix}-${variant}`, bg && `bg-${bg}`, sticky && `sticky-${sticky}`, fixed && `fixed-${fixed}`)\n })\n })\n });\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nexport default Object.assign(Navbar, {\n Brand: NavbarBrand,\n Toggle: NavbarToggle,\n Collapse: NavbarCollapse,\n Text: NavbarText\n});","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib';\nexport function Md3DRotation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.52 21.48C4.25 19.94 1.91 16.76 1.55 13H.05C.56 19.16 5.71 24 12 24l.66-.03-3.81-3.81-1.33 1.32zm.89-6.52c-.19 0-.37-.03-.52-.08-.16-.06-.29-.13-.4-.24-.11-.1-.2-.22-.26-.37-.06-.14-.09-.3-.09-.47h-1.3c0 .36.07.68.21.95.14.27.33.5.56.69.24.18.51.32.82.41.3.1.62.15.96.15.37 0 .72-.05 1.03-.15.32-.1.6-.25.83-.44s.42-.43.55-.72c.13-.29.2-.61.2-.97 0-.19-.02-.38-.07-.56-.05-.18-.12-.35-.23-.51-.1-.16-.24-.3-.4-.43-.17-.13-.37-.23-.61-.31.2-.09.37-.2.52-.33.15-.13.27-.27.37-.42.1-.15.17-.3.22-.46.05-.16.07-.32.07-.48 0-.36-.06-.68-.18-.96-.12-.28-.29-.51-.51-.69-.2-.19-.47-.33-.77-.43C9.1 8.05 8.76 8 8.39 8c-.36 0-.69.05-1 .16-.3.11-.57.26-.79.45-.21.19-.38.41-.51.67-.12.26-.18.54-.18.85h1.3c0-.17.03-.32.09-.45s.14-.25.25-.34c.11-.09.23-.17.38-.22.15-.05.3-.08.48-.08.4 0 .7.1.89.31.19.2.29.49.29.86 0 .18-.03.34-.08.49-.05.15-.14.27-.25.37-.11.1-.25.18-.41.24-.16.06-.36.09-.58.09H7.5v1.03h.77c.22 0 .42.02.6.07s.33.13.45.23c.12.11.22.24.29.4.07.16.1.35.1.57 0 .41-.12.72-.35.93-.23.23-.55.33-.95.33zm8.55-5.92c-.32-.33-.7-.59-1.14-.77-.43-.18-.92-.27-1.46-.27H12v8h2.3c.55 0 1.06-.09 1.51-.27.45-.18.84-.43 1.16-.76.32-.33.57-.73.74-1.19.17-.47.26-.99.26-1.57v-.4c0-.58-.09-1.1-.26-1.57-.18-.47-.43-.87-.75-1.2zm-.39 3.16c0 .42-.05.79-.14 1.13-.1.33-.24.62-.43.85-.19.23-.43.41-.71.53-.29.12-.62.18-.99.18h-.91V9.12h.97c.72 0 1.27.23 1.64.69.38.46.57 1.12.57 1.99v.4zM12 0l-.66.03 3.81 3.81 1.33-1.33c3.27 1.55 5.61 4.72 5.96 8.48h1.5C23.44 4.84 18.29 0 12 0z\"}}]})(props);\n};\nexport function MdAccessibility (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 7h-6v13h-2v-6h-2v6H9V9H3V7h18v2z\"}}]})(props);\n};\nexport function MdAccessible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"4\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.45-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-6.17 5c-.41 1.16-1.52 2-2.83 2-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28.46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07z\"}}]})(props);\n};\nexport function MdAccountBalance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14-12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z\"}}]})(props);\n};\nexport function MdAccountBalanceWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdAccountBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z\"}}]})(props);\n};\nexport function MdAccountCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z\"}}]})(props);\n};\nexport function MdAddShoppingCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.11-.25-.25z\"}}]})(props);\n};\nexport function MdAlarm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdAlarmAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm1-11h-2v3H8v2h3v3h2v-3h3v-2h-3V9z\"}}]})(props);\n};\nexport function MdAlarmOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c3.87 0 7 3.13 7 7 0 .84-.16 1.65-.43 2.4l1.52 1.52c.58-1.19.91-2.51.91-3.92 0-4.97-4.03-9-9-9-1.41 0-2.73.33-3.92.91L9.6 6.43C10.35 6.16 11.16 6 12 6zm10-.28l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM2.92 2.29L1.65 3.57 2.98 4.9l-1.11.93 1.42 1.42 1.11-.94.8.8C3.83 8.69 3 10.75 3 13c0 4.97 4.02 9 9 9 2.25 0 4.31-.83 5.89-2.2l2.2 2.2 1.27-1.27L3.89 3.27l-.97-.98zm13.55 16.1C15.26 19.39 13.7 20 12 20c-3.87 0-7-3.13-7-7 0-1.7.61-3.26 1.61-4.47l9.86 9.86zM8.02 3.28L6.6 1.86l-.86.71 1.42 1.42.86-.71z\"}}]})(props);\n};\nexport function MdAlarmOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-1.46-5.47L8.41 12.4l-1.06 1.06 3.18 3.18 6-6-1.06-1.06-4.93 4.95z\"}}]})(props);\n};\nexport function MdAllOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.21 4.16l4 4v-4zm4 12l-4 4h4zm-12 4l-4-4v4zm-4-12l4-4h-4zm12.95-.95c-2.73-2.73-7.17-2.73-9.9 0s-2.73 7.17 0 9.9 7.17 2.73 9.9 0 2.73-7.16 0-9.9zm-1.1 8.8c-2.13 2.13-5.57 2.13-7.7 0s-2.13-5.57 0-7.7 5.57-2.13 7.7 0 2.13 5.57 0 7.7z\"}}]})(props);\n};\nexport function MdAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18c0 .55.45 1 1 1h1v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h2v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h1c.55 0 1-.45 1-1V8H6v10zM3.5 8C2.67 8 2 8.67 2 9.5v7c0 .83.67 1.5 1.5 1.5S5 17.33 5 16.5v-7C5 8.67 4.33 8 3.5 8zm17 0c-.83 0-1.5.67-1.5 1.5v7c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-7c0-.83-.67-1.5-1.5-1.5zm-4.97-5.84l1.3-1.3c.2-.2.2-.51 0-.71-.2-.2-.51-.2-.71 0l-1.48 1.48C13.85 1.23 12.95 1 12 1c-.96 0-1.86.23-2.66.63L7.85.15c-.2-.2-.51-.2-.71 0-.2.2-.2.51 0 .71l1.31 1.31C6.97 3.26 6 5.01 6 7h12c0-1.99-.97-3.75-2.47-4.84zM10 5H9V4h1v1zm5 0h-1V4h1v1z\"}}]})(props);\n};\nexport function MdAnnouncement (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 9h-2V5h2v6zm0 4h-2v-2h2v2z\"}}]})(props);\n};\nexport function MdAspectRatio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 12h-2v3h-3v2h5v-5zM7 9h3V7H5v5h2V9zm14-6H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z\"}}]})(props);\n};\nexport function MdAssessment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdAssignment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\"}}]})(props);\n};\nexport function MdAssignmentInd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z\"}}]})(props);\n};\nexport function MdAssignmentLate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-6 15h-2v-2h2v2zm0-4h-2V8h2v6zm-1-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"}}]})(props);\n};\nexport function MdAssignmentReturn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm4 12h-4v3l-5-5 5-5v3h4v4z\"}}]})(props);\n};\nexport function MdAssignmentReturned (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 15l-5-5h3V9h4v4h3l-5 5z\"}}]})(props);\n};\nexport function MdAssignmentTurnedIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm-2 14l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z\"}}]})(props);\n};\nexport function MdAutorenew (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z\"}}]})(props);\n};\nexport function MdBackup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z\"}}]})(props);\n};\nexport function MdBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z\"}}]})(props);\n};\nexport function MdBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdBookmarkBorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z\"}}]})(props);\n};\nexport function MdBugReport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z\"}}]})(props);\n};\nexport function MdBuild (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z\"}}]})(props);\n};\nexport function MdCached (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13.57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z\"}}]})(props);\n};\nexport function MdCameraEnhance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 3L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2h-3.17L15 3H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-1l1.25-2.75L16 13l-2.75-1.25L12 9l-1.25 2.75L8 13l2.75 1.25z\"}}]})(props);\n};\nexport function MdCardGiftcard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z\"}}]})(props);\n};\nexport function MdCardMembership (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h4v5l4-2 4 2v-5h4c1.11 0 2-.89 2-2V4c0-1.11-.89-2-2-2zm0 13H4v-2h16v2zm0-5H4V4h16v6z\"}}]})(props);\n};\nexport function MdCardTravel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-3V4c0-1.11-.89-2-2-2H9c-1.11 0-2 .89-2 2v2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zM9 4h6v2H9V4zm11 15H4v-2h16v2zm0-5H4V8h3v2h2V8h6v2h2V8h3v6z\"}}]})(props);\n};\nexport function MdChangeHistory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z\"}}]})(props);\n};\nexport function MdCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"}}]})(props);\n};\nexport function MdChromeReaderMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12h7v1.5h-7zm0-2.5h7V11h-7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 15h-9V6h9v13z\"}}]})(props);\n};\nexport function MdClass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z\"}}]})(props);\n};\nexport function MdCode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"}}]})(props);\n};\nexport function MdCompareArrows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z\"}}]})(props);\n};\nexport function MdCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.15.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.12.23 1.64s.39.97.71 1.35.72.69 1.2.91 1.05.34 1.7.34c.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36.46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59-.62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"}}]})(props);\n};\nexport function MdDashboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z\"}}]})(props);\n};\nexport function MdDateRange (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"}}]})(props);\n};\nexport function MdDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"}}]})(props);\n};\nexport function MdDeleteForever (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"}}]})(props);\n};\nexport function MdDescription (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\"}}]})(props);\n};\nexport function MdDns (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 13H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 19c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdDone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"}}]})(props);\n};\nexport function MdDoneAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z\"}}]})(props);\n};\nexport function MdDonutLarge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 5.08V2c-5 .5-9 4.81-9 10s4 9.5 9 10v-3.08c-3-.48-6-3.4-6-6.92s3-6.44 6-6.92zM18.97 11H22c-.47-5-4-8.53-9-9v3.08C16 5.51 18.54 8 18.97 11zM13 18.92V22c5-.47 8.53-4 9-9h-3.03c-.43 3-2.97 5.49-5.97 5.92z\"}}]})(props);\n};\nexport function MdDonutSmall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9.16V2c-5 .5-9 4.79-9 10s4 9.5 9 10v-7.16c-1-.41-2-1.52-2-2.84s1-2.43 2-2.84zM14.86 11H22c-.48-4.75-4-8.53-9-9v7.16c1 .3 1.52.98 1.86 1.84zM13 14.84V22c5-.47 8.52-4.25 9-9h-7.14c-.34.86-.86 1.54-1.86 1.84z\"}}]})(props);\n};\nexport function MdEject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 17h14v2H5zm7-12L5.33 15h13.34z\"}}]})(props);\n};\nexport function MdEuroSymbol (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 18.5c-2.51 0-4.68-1.42-5.76-3.5H15v-2H8.58c-.05-.33-.08-.66-.08-1s.03-.67.08-1H15V9H9.24C10.32 6.92 12.5 5.5 15 5.5c1.61 0 3.09.59 4.23 1.57L21 5.3C19.41 3.87 17.3 3 15 3c-3.92 0-7.24 2.51-8.48 6H3v2h3.06c-.04.33-.06.66-.06 1 0 .34.02.67.06 1H3v2h3.52c1.24 3.49 4.56 6 8.48 6 2.31 0 4.41-.87 6-2.3l-1.78-1.77c-1.13.98-2.6 1.57-4.22 1.57z\"}}]})(props);\n};\nexport function MdEvent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"}}]})(props);\n};\nexport function MdEventSeat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18v3h3v-3h10v3h3v-6H4zm15-8h3v3h-3zM2 10h3v3H2zm15 3H7V5c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2v8z\"}}]})(props);\n};\nexport function MdExitToApp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdExplore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10.9c-.61 0-1.1.49-1.1 1.1s.49 1.1 1.1 1.1c.61 0 1.1-.49 1.1-1.1s-.49-1.1-1.1-1.1zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm2.19 12.19L6 18l3.81-8.19L18 6l-3.81 8.19z\"}}]})(props);\n};\nexport function MdExtension (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z\"}}]})(props);\n};\nexport function MdFace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm6 0c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8 0-.29.02-.58.05-.86 2.36-1.05 4.23-2.98 5.21-5.37C11.07 8.33 14.05 10 17.42 10c.78 0 1.53-.09 2.25-.26.21.71.33 1.47.33 2.26 0 4.41-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdFavorite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\"}}]})(props);\n};\nexport function MdFavoriteBorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z\"}}]})(props);\n};\nexport function MdFeedback (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 12h-2v-2h2v2zm0-4h-2V6h2v4z\"}}]})(props);\n};\nexport function MdFindInPage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 19.59V8l-6-6H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52-1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75L20 19.59zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3z\"}}]})(props);\n};\nexport function MdFindReplace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z\"}}]})(props);\n};\nexport function MdFingerprint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.24.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09-.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1.5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2.25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.39.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.05-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39-2.57 0-4.66 1.97-4.66 4.39 0 1.44.32 2.77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7.17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s.5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27-.05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09-.01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38-2.94 3.08-2.94 1.7 0 3.08 1.32 3.08 2.94 0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08-1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73-2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08-1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07.42.35.35.61-.05.23-.26.38-.47.38z\"}}]})(props);\n};\nexport function MdFlightLand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.5 19h19v2h-19zm7.18-5.73l4.35 1.16 5.31 1.42c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.06-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l1.6.43 5.31 1.43z\"}}]})(props);\n};\nexport function MdFlightTakeoff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.5 19h19v2h-19zm19.57-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.33-1.97-1.54-1.45.39 1.82 3.16.77 1.33 1.6-.43 5.31-1.42 4.35-1.16L21 11.49c.81-.23 1.28-1.05 1.07-1.85z\"}}]})(props);\n};\nexport function MdFlipToBack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 7H7v2h2V7zm0 4H7v2h2v-2zm0-8c-1.11 0-2 .9-2 2h2V3zm4 12h-2v2h2v-2zm6-12v2h2c0-1.1-.9-2-2-2zm-6 0h-2v2h2V3zM9 17v-2H7c0 1.1.89 2 2 2zm10-4h2v-2h-2v2zm0-4h2V7h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zM5 7H3v12c0 1.1.89 2 2 2h12v-2H5V7zm10-2h2V3h-2v2zm0 12h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdFlipToFront (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z\"}}]})(props);\n};\nexport function MdGTranslate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-9.12L10 2H4c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h7l1 3h8c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zM7.17 14.59c-2.25 0-4.09-1.83-4.09-4.09s1.83-4.09 4.09-4.09c1.04 0 1.99.37 2.74 1.07l.07.06-1.23 1.18-.06-.05c-.29-.27-.78-.59-1.52-.59-1.31 0-2.38 1.09-2.38 2.42s1.07 2.42 2.38 2.42c1.37 0 1.96-.87 2.12-1.46H7.08V9.91h3.95l.01.07c.04.21.05.4.05.61 0 2.35-1.61 4-3.92 4zm6.03-1.71c.33.6.74 1.18 1.19 1.7l-.54.53-.65-2.23zm.77-.76h-.99l-.31-1.04h3.99s-.34 1.31-1.56 2.74c-.52-.62-.89-1.23-1.13-1.7zM21 20c0 .55-.45 1-1 1h-7l2-2-.81-2.77.92-.92L17.79 18l.73-.73-2.71-2.68c.9-1.03 1.6-2.25 1.92-3.51H19v-1.04h-3.64V9h-1.04v1.04h-1.96L11.18 6H20c.55 0 1 .45 1 1v13z\"}}]})(props);\n};\nexport function MdGavel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 21h12v2H1zM5.245 8.07l2.83-2.827 14.14 14.142-2.828 2.828zM12.317 1l5.657 5.656-2.83 2.83-5.654-5.66zM3.825 9.485l5.657 5.657-2.828 2.828-5.657-5.657z\"}}]})(props);\n};\nexport function MdGetApp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"}}]})(props);\n};\nexport function MdGif (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z\"}}]})(props);\n};\nexport function MdGrade (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"}}]})(props);\n};\nexport function MdGroupWork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM8 17.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zM9.5 8c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5S9.5 9.38 9.5 8zm6.5 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function MdHelp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"}}]})(props);\n};\nexport function MdHelpOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdHighlightOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdHistory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"}}]})(props);\n};\nexport function MdHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"}}]})(props);\n};\nexport function MdHourglassEmpty (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z\"}}]})(props);\n};\nexport function MdHourglassFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\"}}]})(props);\n};\nexport function MdHttp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5v2zm2.5-.5h1.5V15H10v-4.5h1.5V9H7v1.5zm5.5 0H14V15h1.5v-4.5H17V9h-4.5v1.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5zm0 2.5h-2v-1h2v1z\"}}]})(props);\n};\nexport function MdHttps (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z\"}}]})(props);\n};\nexport function MdImportantDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 11.01L18 11c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-9c0-.55-.45-.99-1-.99zM23 20h-5v-7h5v7zM20 2H2C.89 2 0 2.89 0 4v12c0 1.1.89 2 2 2h7v2H7v2h8v-2h-2v-2h2v-2H2V4h18v5h2V4c0-1.11-.9-2-2-2zm-8.03 7L11 6l-.97 3H7l2.47 1.76-.94 2.91 2.47-1.8 2.47 1.8-.94-2.91L15 9h-3.03z\"}}]})(props);\n};\nexport function MdInfo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"}}]})(props);\n};\nexport function MdInfoOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\"}}]})(props);\n};\nexport function MdInput (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4v3H1v2h10v3z\"}}]})(props);\n};\nexport function MdInvertColors (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.66 7.93L12 2.27 6.34 7.93c-3.12 3.12-3.12 8.19 0 11.31C7.9 20.8 9.95 21.58 12 21.58c2.05 0 4.1-.78 5.66-2.34 3.12-3.12 3.12-8.19 0-11.31zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 16.69 6 15.19 6 13.59s.62-3.11 1.76-4.24L12 5.1v14.49z\"}}]})(props);\n};\nexport function MdLabel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z\"}}]})(props);\n};\nexport function MdLabelOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM16 17H5V7h11l3.55 5L16 17z\"}}]})(props);\n};\nexport function MdLanguage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\"}}]})(props);\n};\nexport function MdLaunch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"}}]})(props);\n};\nexport function MdLightbulbOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\"}}]})(props);\n};\nexport function MdLineStyle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 16h5v-2H3v2zm6.5 0h5v-2h-5v2zm6.5 0h5v-2h-5v2zM3 20h2v-2H3v2zm4 0h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM3 12h8v-2H3v2zm10 0h8v-2h-8v2zM3 4v4h18V4H3z\"}}]})(props);\n};\nexport function MdLineWeight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 17h18v-2H3v2zm0 3h18v-1H3v1zm0-7h18v-3H3v3zm0-9v4h18V4H3z\"}}]})(props);\n};\nexport function MdList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\"}}]})(props);\n};\nexport function MdLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z\"}}]})(props);\n};\nexport function MdLockOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z\"}}]})(props);\n};\nexport function MdLockOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6zM18 20H6V10h12v10z\"}}]})(props);\n};\nexport function MdLoyalty (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7zm11.77 8.27L13 19.54l-4.27-4.27C8.28 14.81 8 14.19 8 13.5c0-1.38 1.12-2.5 2.5-2.5.69 0 1.32.28 1.77.74l.73.72.73-.73c.45-.45 1.08-.73 1.77-.73 1.38 0 2.5 1.12 2.5 2.5 0 .69-.28 1.32-.73 1.77z\"}}]})(props);\n};\nexport function MdMarkunreadMailbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6H10v6H8V4h6V0H6v6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdMotorcycle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.44 9.03L15.41 5H11v2h3.59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.54-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97zM7.82 15C7.4 16.15 6.28 17 5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h2.82zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z\"}}]})(props);\n};\nexport function MdNoteAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 14h-3v3h-2v-3H8v-2h3v-3h2v3h3v2zm-3-7V3.5L18.5 9H13z\"}}]})(props);\n};\nexport function MdOfflinePin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm5 16H7v-2h10v2zm-6.7-4L7 10.7l1.4-1.4 1.9 1.9 5.3-5.3L17 7.3 10.3 14z\"}}]})(props);\n};\nexport function MdOpacity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.66 8L12 2.35 6.34 8C4.78 9.56 4 11.64 4 13.64s.78 4.11 2.34 5.67 3.61 2.35 5.66 2.35 4.1-.79 5.66-2.35S20 15.64 20 13.64 19.22 9.56 17.66 8zM6 14c.01-2 .62-3.27 1.76-4.4L12 5.27l4.24 4.38C17.38 10.77 17.99 12 18 14H6z\"}}]})(props);\n};\nexport function MdOpenInBrowser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z\"}}]})(props);\n};\nexport function MdOpenInNew (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"}}]})(props);\n};\nexport function MdOpenWith (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\"}}]})(props);\n};\nexport function MdPageview (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.5 9C10.12 9 9 10.12 9 11.5s1.12 2.5 2.5 2.5 2.5-1.12 2.5-2.5S12.88 9 11.5 9zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-3.21 14.21l-2.91-2.91c-.69.44-1.51.7-2.39.7C9.01 16 7 13.99 7 11.5S9.01 7 11.5 7 16 9.01 16 11.5c0 .88-.26 1.69-.7 2.39l2.91 2.9-1.42 1.42z\"}}]})(props);\n};\nexport function MdPanTool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"}}]})(props);\n};\nexport function MdPayment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"}}]})(props);\n};\nexport function MdPermCameraMic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-3.17L15 3H9L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v-2.09c-2.83-.48-5-2.94-5-5.91h2c0 2.21 1.79 4 4 4s4-1.79 4-4h2c0 2.97-2.17 5.43-5 5.91V21h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-6 8c0 1.1-.9 2-2 2s-2-.9-2-2V9c0-1.1.9-2 2-2s2 .9 2 2v4z\"}}]})(props);\n};\nexport function MdPermContactCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1z\"}}]})(props);\n};\nexport function MdPermDataSetting (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07-.66-.07-1 0-4.14 3.36-7.5 7.5-7.5zm3.71 7.99c.02-.16.04-.32.04-.49 0-.17-.01-.33-.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25.21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.11-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49 0 .17.01.33.03.49l-1.06.83c-.09.08-.12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.12.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04.24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32l-1.07-.83zm-3.71 1.01c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdPermDeviceInformation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z\"}}]})(props);\n};\nexport function MdPermIdentity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\"}}]})(props);\n};\nexport function MdPermMedia (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 6H0v5h.01L0 20c0 1.1.9 2 2 2h18v-2H2V6zm20-2h-8l-2-2H6c-1.1 0-1.99.9-1.99 2L4 16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 15l4.5-6 3.5 4.51 2.5-3.01L21 15H7z\"}}]})(props);\n};\nexport function MdPermPhoneMsg (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM12 3v10l3-3h6V3h-9z\"}}]})(props);\n};\nexport function MdPermScanWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2v2h-2z\"}}]})(props);\n};\nexport function MdPets (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"4.5\",\"cy\":\"9.5\",\"r\":\"2.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"5.5\",\"r\":\"2.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"5.5\",\"r\":\"2.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"19.5\",\"cy\":\"9.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.34 14.86c-.87-1.02-1.6-1.89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.04-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1.6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.15 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2.04-1.3-3.49-2.61-4.8z\"}}]})(props);\n};\nexport function MdPictureInPicture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z\"}}]})(props);\n};\nexport function MdPictureInPictureAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V4.97h18v14.05z\"}}]})(props);\n};\nexport function MdPlayForWork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 5v5.59H7.5l4.5 4.5 4.5-4.5H13V5h-2zm-5 9c0 3.31 2.69 6 6 6s6-2.69 6-6h-2c0 2.21-1.79 4-4 4s-4-1.79-4-4H6z\"}}]})(props);\n};\nexport function MdPolymer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4h-4L7.11 16.63 4.5 12 9 4H5L.5 12 5 20h4l7.89-12.63L19.5 12 15 20h4l4.5-8z\"}}]})(props);\n};\nexport function MdPowerSettingsNew (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83z\"}}]})(props);\n};\nexport function MdPregnantWoman (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 4c0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm7 9c-.01-1.34-.83-2.51-2-3 0-1.66-1.34-3-3-3s-3 1.34-3 3v7h2v5h3v-5h3v-4z\"}}]})(props);\n};\nexport function MdPrint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"}}]})(props);\n};\nexport function MdQueryBuilder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"}}]})(props);\n};\nexport function MdQuestionAnswer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z\"}}]})(props);\n};\nexport function MdReceipt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 17H6v-2h12v2zm0-4H6v-2h12v2zm0-4H6V7h12v2zM3 22l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20z\"}}]})(props);\n};\nexport function MdRecordVoiceOver (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"9\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.68 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1.63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z\"}}]})(props);\n};\nexport function MdRedeem (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z\"}}]})(props);\n};\nexport function MdRemoveShoppingCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdReorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z\"}}]})(props);\n};\nexport function MdReportProblem (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdRestore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"}}]})(props);\n};\nexport function MdRestorePage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm-2 16c-2.05 0-3.81-1.24-4.58-3h1.71c.63.9 1.68 1.5 2.87 1.5 1.93 0 3.5-1.57 3.5-3.5S13.93 9.5 12 9.5c-1.35 0-2.52.78-3.1 1.9l1.6 1.6h-4V9l1.3 1.3C8.69 8.92 10.23 8 12 8c2.76 0 5 2.24 5 5s-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdRoom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function MdRoundedCorner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 19h2v2h-2v-2zm0-2h2v-2h-2v2zM3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm0-4h2V3H3v2zm4 0h2V3H7v2zm8 16h2v-2h-2v2zm-4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm-8 0h2v-2H7v2zm-4 0h2v-2H3v2zM21 8c0-2.76-2.24-5-5-5h-5v2h5c1.65 0 3 1.35 3 3v5h2V8z\"}}]})(props);\n};\nexport function MdRowing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.5 14.5L4 19l1.5 1.5L9 17h2l-2.5-2.5zM15 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 20.01L18 24l-2.99-3.01V19.5l-7.1-7.09c-.31.05-.61.07-.91.07v-2.16c1.66.03 3.61-.87 4.67-2.04l1.4-1.55c.19-.21.43-.38.69-.5.29-.14.62-.23.96-.23h.03C15.99 6.01 17 7.02 17 8.26v5.75c0 .84-.35 1.61-.92 2.16l-3.58-3.58v-2.27c-.63.52-1.43 1.02-2.29 1.39L16.5 18H18l3 3.01z\"}}]})(props);\n};\nexport function MdSchedule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"}}]})(props);\n};\nexport function MdSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"}}]})(props);\n};\nexport function MdSettings (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\"}}]})(props);\n};\nexport function MdSettingsApplications (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z\"}}]})(props);\n};\nexport function MdSettingsBackupRestore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z\"}}]})(props);\n};\nexport function MdSettingsBluetooth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 24h2v-2h-2v2zm-4 0h2v-2H7v2zm8 0h2v-2h-2v2zm2.71-18.29L12 0h-1v7.59L6.41 3 5 4.41 10.59 10 5 15.59 6.41 17 11 12.41V20h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 3.83l1.88 1.88L13 7.59V3.83zm1.88 10.46L13 16.17v-3.76l1.88 1.88z\"}}]})(props);\n};\nexport function MdSettingsBrightness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02zM8 16h2.5l1.5 1.5 1.5-1.5H16v-2.5l1.5-1.5-1.5-1.5V8h-2.5L12 6.5 10.5 8H8v2.5L6.5 12 8 13.5V16zm4-7c1.66 0 3 1.34 3 3s-1.34 3-3 3V9z\"}}]})(props);\n};\nexport function MdSettingsCell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 16H8V4h8v12z\"}}]})(props);\n};\nexport function MdSettingsEthernet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.24zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l-4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z\"}}]})(props);\n};\nexport function MdSettingsInputAntenna (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm1 9.29c.88-.39 1.5-1.26 1.5-2.29 0-1.38-1.12-2.5-2.5-2.5S9.5 10.62 9.5 12c0 1.02.62 1.9 1.5 2.29v3.3L7.59 21 9 22.41l3-3 3 3L16.41 21 13 17.59v-3.3zM12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z\"}}]})(props);\n};\nexport function MdSettingsInputComponent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c0-.55-.45-1-1-1s-1 .45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z\"}}]})(props);\n};\nexport function MdSettingsInputComposite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 2c0-.55-.45-1-1-1s-1 .45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z\"}}]})(props);\n};\nexport function MdSettingsInputHdmi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 7V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v3H5v6l3 6v3h8v-3l3-6V7h-1zM8 4h8v3h-2V5h-1v2h-2V5h-1v2H8V4z\"}}]})(props);\n};\nexport function MdSettingsInputSvideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11.5c0-.83-.67-1.5-1.5-1.5S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5zm7-5c0-.83-.67-1.5-1.5-1.5h-3C9.67 5 9 5.67 9 6.5S9.67 8 10.5 8h3c.83 0 1.5-.67 1.5-1.5zM8.5 15c-.83 0-1.5.67-1.5 1.5S7.67 18 8.5 18s1.5-.67 1.5-1.5S9.33 15 8.5 15zM12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9zm5.5-11c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm-2 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function MdSettingsOverscan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.01 5.5L10 8h4l-1.99-2.5zM18 10v4l2.5-1.99L18 10zM6 10l-2.5 2.01L6 14v-4zm8 6h-4l2.01 2.5L14 16zm7-13H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z\"}}]})(props);\n};\nexport function MdSettingsPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9h-2v2h2V9zm4 0h-2v2h2V9zm3 6.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM19 9v2h2V9h-2z\"}}]})(props);\n};\nexport function MdSettingsPower (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm2-22h-2v10h2V2zm3.56 2.44l-1.45 1.45C16.84 6.94 18 8.83 18 11c0 3.31-2.69 6-6 6s-6-2.69-6-6c0-2.17 1.16-4.06 2.88-5.12L7.44 4.44C5.36 5.88 4 8.28 4 11c0 4.42 3.58 8 8 8s8-3.58 8-8c0-2.72-1.36-5.12-3.44-6.56zM15 24h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdSettingsRemote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 9H9c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V10c0-.55-.45-1-1-1zm-3 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM7.05 6.05l1.41 1.41C9.37 6.56 10.62 6 12 6s2.63.56 3.54 1.46l1.41-1.41C15.68 4.78 13.93 4 12 4s-3.68.78-4.95 2.05zM12 0C8.96 0 6.21 1.23 4.22 3.22l1.41 1.41C7.26 3.01 9.51 2 12 2s4.74 1.01 6.36 2.64l1.41-1.41C17.79 1.23 15.04 0 12 0z\"}}]})(props);\n};\nexport function MdSettingsVoice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 24h2v-2H7v2zm5-11c1.66 0 2.99-1.34 2.99-3L15 4c0-1.66-1.34-3-3-3S9 2.34 9 4v6c0 1.66 1.34 3 3 3zm-1 11h2v-2h-2v2zm4 0h2v-2h-2v2zm4-14h-1.7c0 3-2.54 5.1-5.3 5.1S6.7 13 6.7 10H5c0 3.41 2.72 6.23 6 6.72V20h2v-3.28c3.28-.49 6-3.31 6-6.72z\"}}]})(props);\n};\nexport function MdShop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H2v13c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6h-6zm-6-2h4v2h-4V4zM9 18V9l7.5 4L9 18z\"}}]})(props);\n};\nexport function MdShopTwo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9H1v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2H3V9zm15-4V3c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H5v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2V5h-5zm-6-2h4v2h-4V3zm0 12V8l5.5 3-5.5 4z\"}}]})(props);\n};\nexport function MdShoppingBasket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.21 9l-4.38-6.56c-.19-.28-.51-.42-.83-.42-.32 0-.64.14-.83.43L6.79 9H2c-.55 0-1 .45-1 1 0 .09.01.18.04.27l2.54 9.27c.23.84 1 1.46 1.92 1.46h13c.92 0 1.69-.62 1.93-1.46l2.54-9.27L23 10c0-.55-.45-1-1-1h-4.79zM9 9l3-4.4L15 9H9zm3 8c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdShoppingCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdSpeakerNotes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 14H6v-2h2v2zm0-3H6V9h2v2zm0-3H6V6h2v2zm7 6h-5v-2h5v2zm3-3h-8V9h8v2zm0-3h-8V6h8v2z\"}}]})(props);\n};\nexport function MdSpeakerNotesOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.54 11l-.54-.54L7.54 8 6 6.46 2.38 2.84 1.27 1.73 0 3l2.01 2.01L2 22l4-4h9l5.73 5.73L22 22.46 17.54 18l-7-7zM8 14H6v-2h2v2zm-2-3V9l2 2H6zm14-9H4.08L10 7.92V6h8v2h-7.92l1 1H18v2h-4.92l6.99 6.99C21.14 17.95 22 17.08 22 16V4c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdSpellcheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.45 16h2.09L9.43 3H7.57L2.46 16h2.09l1.12-3h5.64l1.14 3zm-6.02-5L8.5 5.48 10.57 11H6.43zm15.16.59l-8.09 8.09L9.83 16l-1.41 1.41 5.09 5.09L23 13l-1.41-1.41z\"}}]})(props);\n};\nexport function MdStars (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm4.24 16L12 15.45 7.77 18l1.12-4.81-3.73-3.23 4.92-.42L12 5l1.92 4.53 4.92.42-3.73 3.23L16.23 18z\"}}]})(props);\n};\nexport function MdStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zm-9 4H6v-4h6v4z\"}}]})(props);\n};\nexport function MdSubject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 17H4v2h10v-2zm6-8H4v2h16V9zM4 15h16v-2H4v2zM4 5v2h16V5H4z\"}}]})(props);\n};\nexport function MdSupervisorAccount (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 12c1.38 0 2.49-1.12 2.49-2.5S17.88 7 16.5 7C15.12 7 14 8.12 14 9.5s1.12 2.5 2.5 2.5zM9 11c1.66 0 2.99-1.34 2.99-3S10.66 5 9 5C7.34 5 6 6.34 6 8s1.34 3 3 3zm7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75zM9 13c-2.33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z\"}}]})(props);\n};\nexport function MdSwapHoriz (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z\"}}]})(props);\n};\nexport function MdSwapVert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z\"}}]})(props);\n};\nexport function MdSwapVerticalCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM6.5 9L10 5.5 13.5 9H11v4H9V9H6.5zm11 6L14 18.5 10.5 15H13v-4h2v4h2.5z\"}}]})(props);\n};\nexport function MdSystemUpdateAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 16.5l4-4h-3v-9h-2v9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdTab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4h8v10z\"}}]})(props);\n};\nexport function MdTabUnselected (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 9h2V7H1v2zm0 4h2v-2H1v2zm0-8h2V3c-1.1 0-2 .9-2 2zm8 16h2v-2H9v2zm-8-4h2v-2H1v2zm2 4v-2H1c0 1.1.9 2 2 2zM21 3h-8v6h10V5c0-1.1-.9-2-2-2zm0 14h2v-2h-2v2zM9 5h2V3H9v2zM5 21h2v-2H5v2zM5 5h2V3H5v2zm16 16c1.1 0 2-.9 2-2h-2v2zm0-8h2v-2h-2v2zm-8 8h2v-2h-2v2zm4 0h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdTheaters (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"}}]})(props);\n};\nexport function MdThumbDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z\"}}]})(props);\n};\nexport function MdThumbUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z\"}}]})(props);\n};\nexport function MdThumbsUpDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29c.07-.17.11-.36.11-.55V6zm10.5 4h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17-.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4.94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function MdTimeline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z\"}}]})(props);\n};\nexport function MdToc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdToday (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"}}]})(props);\n};\nexport function MdToll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zM3 12c0-2.61 1.67-4.83 4-5.65V4.26C3.55 5.15 1 8.27 1 12s2.55 6.85 6 7.74v-2.09c-2.33-.82-4-3.04-4-5.65z\"}}]})(props);\n};\nexport function MdTouchApp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 11.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.01 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74zm9.84 4.63l-4.54-2.26c-.17-.07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74l-3.43-.72c-.08-.01-.15-.03-.24-.03-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91-1.38z\"}}]})(props);\n};\nexport function MdTrackChanges (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.07 4.93l-1.41 1.41C19.1 7.79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1.41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.86v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z\"}}]})(props);\n};\nexport function MdTranslate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z\"}}]})(props);\n};\nexport function MdTrendingDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6z\"}}]})(props);\n};\nexport function MdTrendingFlat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 12l-4-4v3H3v2h15v3z\"}}]})(props);\n};\nexport function MdTrendingUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z\"}}]})(props);\n};\nexport function MdTurnedIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdTurnedInNot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z\"}}]})(props);\n};\nexport function MdUpdate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12.65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z\"}}]})(props);\n};\nexport function MdVerifiedUser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z\"}}]})(props);\n};\nexport function MdViewAgenda (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 13H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm0-10H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdViewArray (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18h3V5H4v13zM18 5v13h3V5h-3zM8 18h9V5H8v13z\"}}]})(props);\n};\nexport function MdViewCarousel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 19h10V4H7v15zm-5-2h4V6H2v11zM18 6v11h4V6h-4z\"}}]})(props);\n};\nexport function MdViewColumn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18h5V5h-5v13zm-6 0h5V5H4v13zM16 5v13h5V5h-5z\"}}]})(props);\n};\nexport function MdViewDay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 21h19v-3H2v3zM20 8H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zM2 3v3h19V3H2z\"}}]})(props);\n};\nexport function MdViewHeadline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z\"}}]})(props);\n};\nexport function MdViewList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 14h4v-4H4v4zm0 5h4v-4H4v4zM4 9h4V5H4v4zm5 5h12v-4H9v4zm0 5h12v-4H9v4zM9 5v4h12V5H9z\"}}]})(props);\n};\nexport function MdViewModule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11h5V5H4v6zm0 7h5v-6H4v6zm6 0h5v-6h-5v6zm6 0h5v-6h-5v6zm-6-7h5V5h-5v6zm6-6v6h5V5h-5z\"}}]})(props);\n};\nexport function MdViewQuilt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18h5v-6h-5v6zm-6 0h5V5H4v13zm12 0h5v-6h-5v6zM10 5v6h11V5H10z\"}}]})(props);\n};\nexport function MdViewStream (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18h17v-6H4v6zM4 5v6h17V5H4z\"}}]})(props);\n};\nexport function MdViewWeek (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdVisibility (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"}}]})(props);\n};\nexport function MdVisibilityOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"}}]})(props);\n};\nexport function MdWatchLater (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z\"}}]})(props);\n};\nexport function MdWork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z\"}}]})(props);\n};\nexport function MdYoutubeSearchedFor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.01 14h-.8l-.27-.27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27.27v.79l5.01 4.99L22 19l-4.99-5z\"}}]})(props);\n};\nexport function MdZoomIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm2.5-4h-2v2H9v-2H7V9h2V7h1v2h2v1z\"}}]})(props);\n};\nexport function MdZoomOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\"}}]})(props);\n};\nexport function MdAddAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.01 21.01c0 1.1.89 1.99 1.99 1.99s1.99-.89 1.99-1.99h-3.98zm8.87-4.19V11c0-3.25-2.25-5.97-5.29-6.69v-.72C13.59 2.71 12.88 2 12 2s-1.59.71-1.59 1.59v.72C7.37 5.03 5.12 7.75 5.12 11v5.82L3 18.94V20h18v-1.06l-2.12-2.12zM16 13.01h-3v3h-2v-3H8V11h3V8h2v3h3v2.01z\"}}]})(props);\n};\nexport function MdError (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"}}]})(props);\n};\nexport function MdErrorOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdWarning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdAddToQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-7v2h-3v3h-2v-3H8v-2h3V7h2v3h3z\"}}]})(props);\n};\nexport function MdAirplay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 22h12l-6-6zM21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4v-2H3V5h18v12h-4v2h4c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14.5c-2.49 0-4.5-2.01-4.5-4.5S9.51 7.5 12 7.5s4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5zm0-5.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z\"}}]})(props);\n};\nexport function MdArtTrack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 13h-8v-2h8v2zm0-6h-8v2h8V7zm-8 10h8v-2h-8v2zm-2-8v6c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V9c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2zm-1.5 6l-2.25-3-1.75 2.26-1.25-1.51L3.5 15h7z\"}}]})(props);\n};\nexport function MdAvTimer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 17c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1zm0-14v4h2V5.08c3.39.49 6 3.39 6 6.92 0 3.87-3.13 7-7 7s-7-3.13-7-7c0-1.68.59-3.22 1.58-4.42L12 13l1.41-1.41-6.8-6.8v.02C4.42 6.45 3 9.05 3 12c0 4.97 4.02 9 9 9 4.97 0 9-4.03 9-9s-4.03-9-9-9h-1zm7 9c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1zM6 12c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1z\"}}]})(props);\n};\nexport function MdBrandingWatermark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16h-9v-6h9v6z\"}}]})(props);\n};\nexport function MdCallToAction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z\"}}]})(props);\n};\nexport function MdClosedCaption (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z\"}}]})(props);\n};\nexport function MdEqualizer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\"}}]})(props);\n};\nexport function MdExplicit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 6h-4v2h4v2h-4v2h4v2H9V7h6v2z\"}}]})(props);\n};\nexport function MdFastForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z\"}}]})(props);\n};\nexport function MdFastRewind (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z\"}}]})(props);\n};\nexport function MdFeaturedPlayList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 8H3V9h9v2zm0-4H3V5h9v2z\"}}]})(props);\n};\nexport function MdFeaturedVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 9H3V5h9v7z\"}}]})(props);\n};\nexport function MdFiberDvr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.5 10.5h2v1h-2zm-13 0h2v3h-2zM21 3H3c-1.11 0-2 .89-2 2v14c0 1.1.89 2 2 2h18c1.11 0 2-.9 2-2V5c0-1.11-.89-2-2-2zM8 13.5c0 .85-.65 1.5-1.5 1.5H3V9h3.5c.85 0 1.5.65 1.5 1.5v3zm4.62 1.5h-1.5L9.37 9h1.5l1 3.43 1-3.43h1.5l-1.75 6zM21 11.5c0 .6-.4 1.15-.9 1.4L21 15h-1.5l-.85-2H17.5v2H16V9h3.5c.85 0 1.5.65 1.5 1.5v1z\"}}]})(props);\n};\nexport function MdFiberManualRecord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"8\"}}]})(props);\n};\nexport function MdFiberNew (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zM8.5 15H7.3l-2.55-3.5V15H3.5V9h1.25l2.5 3.5V9H8.5v6zm5-4.74H11v1.12h2.5v1.26H11v1.11h2.5V15h-4V9h4v1.26zm7 3.74c0 .55-.45 1-1 1h-4c-.55 0-1-.45-1-1V9h1.25v4.51h1.13V9.99h1.25v3.51h1.12V9h1.25v5z\"}}]})(props);\n};\nexport function MdFiberPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.5 10.5h2v1h-2zM20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zM9 11.5c0 .85-.65 1.5-1.5 1.5h-2v2H4V9h3.5c.85 0 1.5.65 1.5 1.5v1zm3.5 3.5H11V9h1.5v6zm7.5 0h-1.2l-2.55-3.5V15H15V9h1.25l2.5 3.5V9H20v6z\"}}]})(props);\n};\nexport function MdFiberSmartRecord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"12\",\"r\":\"8\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 4.26v2.09c2.33.82 4 3.04 4 5.65s-1.67 4.83-4 5.65v2.09c3.45-.89 6-4.01 6-7.74s-2.55-6.85-6-7.74z\"}}]}]})(props);\n};\nexport function MdForward10 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8zm6.8 3H10v-3.3L9 13v-.7l1.8-.6h.1V16zm4.3-1.8c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.8-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z\"}}]})(props);\n};\nexport function MdForward30 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.6 13.5h.4c.2 0 .4-.1.5-.2s.2-.2.2-.4v-.2s-.1-.1-.1-.2-.1-.1-.2-.1h-.5s-.1.1-.2.1-.1.1-.1.2v.2h-1c0-.2 0-.3.1-.5s.2-.3.3-.4.3-.2.4-.2.4-.1.5-.1c.2 0 .4 0 .6.1s.3.1.5.2.2.2.3.4.1.3.1.5v.3s-.1.2-.1.3-.1.2-.2.2-.2.1-.3.2c.2.1.4.2.5.4s.2.4.2.6c0 .2 0 .4-.1.5s-.2.3-.3.4-.3.2-.5.2-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.4-.1-.6h.8v.2s.1.1.1.2.1.1.2.1h.5s.1-.1.2-.1.1-.1.1-.2v-.5s-.1-.1-.1-.2-.1-.1-.2-.1h-.6v-.7zm5.7.7c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.9-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5zM4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8z\"}}]})(props);\n};\nexport function MdForward5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 13c0 4.4 3.6 8 8 8s8-3.6 8-8h-2c0 3.3-2.7 6-6 6s-6-2.7-6-6 2.7-6 6-6v4l5-5-5-5v4c-4.4 0-8 3.6-8 8zm6.7.9l.2-2.2h2.4v.7h-1.7l-.1.9s.1 0 .1-.1.1 0 .1-.1.1 0 .2 0h.2c.2 0 .4 0 .5.1s.3.2.4.3.2.3.3.5.1.4.1.6c0 .2 0 .4-.1.5s-.1.3-.3.5-.3.2-.5.3-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.3-.1-.5h.8c0 .2.1.3.2.4s.2.1.4.1c.1 0 .2 0 .3-.1l.2-.2s.1-.2.1-.3v-.6l-.1-.2-.2-.2s-.2-.1-.3-.1h-.2s-.1 0-.2.1-.1 0-.1.1-.1.1-.1.1h-.6z\"}}]})(props);\n};\nexport function MdGames (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z\"}}]})(props);\n};\nexport function MdHd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-8 12H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm2-6h4c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1h-4V9zm1.5 4.5h2v-3h-2v3z\"}}]})(props);\n};\nexport function MdHearing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 20c-.29 0-.56-.06-.76-.15-.71-.37-1.21-.88-1.71-2.38-.51-1.56-1.47-2.29-2.39-3-.79-.61-1.61-1.24-2.32-2.53C9.29 10.98 9 9.93 9 9c0-2.8 2.2-5 5-5s5 2.2 5 5h2c0-3.93-3.07-7-7-7S7 5.07 7 9c0 1.26.38 2.65 1.07 3.9.91 1.65 1.98 2.48 2.85 3.15.81.62 1.39 1.07 1.71 2.05.6 1.82 1.37 2.84 2.73 3.55.51.23 1.07.35 1.64.35 2.21 0 4-1.79 4-4h-2c0 1.1-.9 2-2 2zM7.64 2.64L6.22 1.22C4.23 3.21 3 5.96 3 9s1.23 5.79 3.22 7.78l1.41-1.41C6.01 13.74 5 11.49 5 9s1.01-4.74 2.64-6.36zM11.5 9c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5-1.12-2.5-2.5-2.5-2.5 1.12-2.5 2.5z\"}}]})(props);\n};\nexport function MdHighQuality (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 11H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm7-1c0 .55-.45 1-1 1h-.75v1.5h-1.5V15H14c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v4zm-3.5-.5h2v-3h-2v3z\"}}]})(props);\n};\nexport function MdLibraryAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z\"}}]})(props);\n};\nexport function MdLibraryBooks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9H9V9h10v2zm-4 4H9v-2h6v2zm4-8H9V5h10v2z\"}}]})(props);\n};\nexport function MdLibraryMusic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 5h-3v5.5c0 1.38-1.12 2.5-2.5 2.5S10 13.88 10 12.5s1.12-2.5 2.5-2.5c.57 0 1.08.19 1.5.51V5h4v2zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6z\"}}]})(props);\n};\nexport function MdLoop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"}}]})(props);\n};\nexport function MdMic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\"}}]})(props);\n};\nexport function MdMicNone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm-1.2-9.1c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2l-.01 6.2c0 .66-.53 1.2-1.19 1.2-.66 0-1.2-.54-1.2-1.2V4.9zm6.5 6.1c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\"}}]})(props);\n};\nexport function MdMicOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28zm-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18l5.98 5.99zM4.27 3L3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3 .22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21 21 19.73 4.27 3z\"}}]})(props);\n};\nexport function MdMovie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z\"}}]})(props);\n};\nexport function MdMusicVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14zM8 15c0-1.66 1.34-3 3-3 .35 0 .69.07 1 .18V6h5v2h-3v7.03c-.02 1.64-1.35 2.97-3 2.97-1.66 0-3-1.34-3-3z\"}}]})(props);\n};\nexport function MdNewReleases (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 12l-2.44-2.78.34-3.68-3.61-.82-1.89-3.18L12 3 8.6 1.54 6.71 4.72l-3.61.81.34 3.68L1 12l2.44 2.78-.34 3.69 3.61.82 1.89 3.18L12 21l3.4 1.46 1.89-3.18 3.61-.82-.34-3.68L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7h2v6z\"}}]})(props);\n};\nexport function MdNotInterested (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z\"}}]})(props);\n};\nexport function MdNote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 10l-6-6H4c-1.1 0-2 .9-2 2v12.01c0 1.1.9 1.99 2 1.99l16-.01c1.1 0 2-.89 2-1.99v-8zm-7-4.5l5.5 5.5H15V5.5z\"}}]})(props);\n};\nexport function MdPause (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"}}]})(props);\n};\nexport function MdPauseCircleFilled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 14H9V8h2v8zm4 0h-2V8h2v8z\"}}]})(props);\n};\nexport function MdPauseCircleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16h2V8H9v8zm3-14C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm1-4h2V8h-2v8z\"}}]})(props);\n};\nexport function MdPlayArrow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 5v14l11-7z\"}}]})(props);\n};\nexport function MdPlayCircleFilled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z\"}}]})(props);\n};\nexport function MdPlayCircleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdPlaylistAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10H2v2h12v-2zm0-4H2v2h12V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM2 16h8v-2H2v2z\"}}]})(props);\n};\nexport function MdPlaylistAddCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10H2v2h12v-2zm0-4H2v2h12V6zM2 16h8v-2H2v2zm19.5-4.5L23 13l-6.99 7-4.51-4.5L13 14l3.01 3 5.49-5.5z\"}}]})(props);\n};\nexport function MdPlaylistPlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 9H2v2h17V9zm0-4H2v2h17V5zM2 15h13v-2H2v2zm15-2v6l5-3-5-3z\"}}]})(props);\n};\nexport function MdQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z\"}}]})(props);\n};\nexport function MdQueueMusic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z\"}}]})(props);\n};\nexport function MdQueuePlayNext (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h2v-2H3V5h18v8h2V5c0-1.11-.9-2-2-2zm-8 7V7h-2v3H8v2h3v3h2v-3h3v-2h-3zm11 8l-4.5 4.5L18 21l3-3-3-3 1.5-1.5L24 18z\"}}]})(props);\n};\nexport function MdRadio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.24 6.15C2.51 6.43 2 7.17 2 8v12c0 1.1.89 2 2 2h16c1.11 0 2-.9 2-2V8c0-1.11-.89-2-2-2H8.3l8.26-3.34L15.88 1 3.24 6.15zM7 20c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm13-8h-2v-2h-2v2H4V8h16v4z\"}}]})(props);\n};\nexport function MdRecentActors (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5v14h2V5h-2zm-4 14h2V5h-2v14zM14 5H2c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM8 7.75c1.24 0 2.25 1.01 2.25 2.25S9.24 12.25 8 12.25 5.75 11.24 5.75 10 6.76 7.75 8 7.75zM12.5 17h-9v-.75c0-1.5 3-2.25 4.5-2.25s4.5.75 4.5 2.25V17z\"}}]})(props);\n};\nexport function MdRemoveFromQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-7v2H8v-2h8z\"}}]})(props);\n};\nexport function MdRepeat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z\"}}]})(props);\n};\nexport function MdRepeatOne (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4zm-4-2V9h-1l-2 1v1h1.5v4H13z\"}}]})(props);\n};\nexport function MdReplay10 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-1.1 11H10v-3.3L9 13v-.7l1.8-.6h.1V16zm4.3-1.8c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1c.2.1.3.2.5.3s.2.3.3.6.1.5.1.8v.7zm-.9-.8v-.5s-.1-.2-.1-.3-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z\"}}]})(props);\n};\nexport function MdReplay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\"}}]})(props);\n};\nexport function MdReplay30 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-2.4 8.5h.4c.2 0 .4-.1.5-.2s.2-.2.2-.4v-.2s-.1-.1-.1-.2-.1-.1-.2-.1h-.5s-.1.1-.2.1-.1.1-.1.2v.2h-1c0-.2 0-.3.1-.5s.2-.3.3-.4.3-.2.4-.2.4-.1.5-.1c.2 0 .4 0 .6.1s.3.1.5.2.2.2.3.4.1.3.1.5v.3s-.1.2-.1.3-.1.2-.2.2-.2.1-.3.2c.2.1.4.2.5.4s.2.4.2.6c0 .2 0 .4-.1.5s-.2.3-.3.4-.3.2-.5.2-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.4-.1-.6h.8v.2s.1.1.1.2.1.1.2.1h.5s.1-.1.2-.1.1-.1.1-.2v-.5s-.1-.1-.1-.2-.1-.1-.2-.1h-.6v-.7zm5.7.7c0 .3 0 .6-.1.8l-.3.6s-.3.3-.5.3-.4.1-.6.1-.4 0-.6-.1-.3-.2-.5-.3-.2-.3-.3-.6-.1-.5-.1-.8v-.7c0-.3 0-.6.1-.8l.3-.6s.3-.3.5-.3.4-.1.6-.1.4 0 .6.1.3.2.5.3.2.3.3.6.1.5.1.8v.7zm-.8-.8v-.5c0-.1-.1-.2-.1-.3s-.1-.1-.2-.2-.2-.1-.3-.1-.2 0-.3.1l-.2.2s-.1.2-.1.3v2s.1.2.1.3.1.1.2.2.2.1.3.1.2 0 .3-.1l.2-.2s.1-.2.1-.3v-1.5z\"}}]})(props);\n};\nexport function MdReplay5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5V1L7 6l5 5V7c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6H4c0 4.4 3.6 8 8 8s8-3.6 8-8-3.6-8-8-8zm-1.3 8.9l.2-2.2h2.4v.7h-1.7l-.1.9s.1 0 .1-.1.1 0 .1-.1.1 0 .2 0h.2c.2 0 .4 0 .5.1s.3.2.4.3.2.3.3.5.1.4.1.6c0 .2 0 .4-.1.5s-.1.3-.3.5-.3.2-.4.3-.4.1-.6.1c-.2 0-.4 0-.5-.1s-.3-.1-.5-.2-.2-.2-.3-.4-.1-.3-.1-.5h.8c0 .2.1.3.2.4s.2.1.4.1c.1 0 .2 0 .3-.1l.2-.2s.1-.2.1-.3v-.6l-.1-.2-.2-.2s-.2-.1-.3-.1h-.2s-.1 0-.2.1-.1 0-.1.1-.1.1-.1.1h-.7z\"}}]})(props);\n};\nexport function MdShuffle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.46 20 9.5V4h-5.5zm.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z\"}}]})(props);\n};\nexport function MdSkipNext (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z\"}}]})(props);\n};\nexport function MdSkipPrevious (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 6h2v12H6zm3.5 6l8.5 6V6z\"}}]})(props);\n};\nexport function MdSlowMotionVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.05 9.79L10 7.5v9l3.05-2.29L16 12zm0 0L10 7.5v9l3.05-2.29L16 12zm0 0L10 7.5v9l3.05-2.29L16 12zM11 4.07V2.05c-2.01.2-3.84 1-5.32 2.21L7.1 5.69c1.11-.86 2.44-1.44 3.9-1.62zM5.69 7.1L4.26 5.68C3.05 7.16 2.25 8.99 2.05 11h2.02c.18-1.46.76-2.79 1.62-3.9zM4.07 13H2.05c.2 2.01 1 3.84 2.21 5.32l1.43-1.43c-.86-1.1-1.44-2.43-1.62-3.89zm1.61 6.74C7.16 20.95 9 21.75 11 21.95v-2.02c-1.46-.18-2.79-.76-3.9-1.62l-1.42 1.43zM22 12c0 5.16-3.92 9.42-8.95 9.95v-2.02C16.97 19.41 20 16.05 20 12s-3.03-7.41-6.95-7.93V2.05C18.08 2.58 22 6.84 22 12z\"}}]})(props);\n};\nexport function MdSnooze (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-3-9h3.63L9 15.2V17h6v-2h-3.63L15 10.8V9H9v2z\"}}]})(props);\n};\nexport function MdSortByAlpha (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27L1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27H6.1zm-1.13 7.37l1.94-5.18 1.94 5.18H4.97zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26l-5.93 8.6z\"}}]})(props);\n};\nexport function MdStop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 6h12v12H6z\"}}]})(props);\n};\nexport function MdSubscriptions (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8H4V6h16v2zm-2-6H6v2h12V2zm4 10v8c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2v-8c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2zm-6 4l-6-3.27v6.53L16 16z\"}}]})(props);\n};\nexport function MdSubtitles (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM4 12h4v2H4v-2zm10 6H4v-2h10v2zm6 0h-4v-2h4v2zm0-4H10v-2h10v2z\"}}]})(props);\n};\nexport function MdSurroundSound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7.76 16.24l-1.41 1.41C4.78 16.1 4 14.05 4 12c0-2.05.78-4.1 2.34-5.66l1.41 1.41C6.59 8.93 6 10.46 6 12s.59 3.07 1.76 4.24zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm5.66 1.66l-1.41-1.41C17.41 15.07 18 13.54 18 12s-.59-3.07-1.76-4.24l1.41-1.41C19.22 7.9 20 9.95 20 12c0 2.05-.78 4.1-2.34 5.66zM12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdVideoCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4zM14 13h-3v3H9v-3H6v-2h3V8h2v3h3v2z\"}}]})(props);\n};\nexport function MdVideoLabel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 13H3V5h18v11z\"}}]})(props);\n};\nexport function MdVideoLibrary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8 12.5v-9l6 4.5-6 4.5z\"}}]})(props);\n};\nexport function MdVideocam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z\"}}]})(props);\n};\nexport function MdVideocamOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6.5l-4 4V7c0-.55-.45-1-1-1H9.82L21 17.18V6.5zM3.27 2L2 3.27 4.73 6H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.21 0 .39-.08.54-.18L19.73 21 21 19.73 3.27 2z\"}}]})(props);\n};\nexport function MdVolumeDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z\"}}]})(props);\n};\nexport function MdVolumeMute (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 9v6h4l5 5V4l-5 5H7z\"}}]})(props);\n};\nexport function MdVolumeOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"}}]})(props);\n};\nexport function MdVolumeUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"}}]})(props);\n};\nexport function MdWeb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z\"}}]})(props);\n};\nexport function MdWebAsset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm0 14H5V8h14v10z\"}}]})(props);\n};\nexport function MdBusiness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z\"}}]})(props);\n};\nexport function MdCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"}}]})(props);\n};\nexport function MdCallEnd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 9c-1.6 0-3.15.25-4.6.72v3.1c0 .39-.23.74-.56.9-.98.49-1.87 1.12-2.66 1.85-.18.18-.43.28-.7.28-.28 0-.53-.11-.71-.29L.29 13.08c-.18-.17-.29-.42-.29-.7 0-.28.11-.53.29-.71C3.34 8.78 7.46 7 12 7s8.66 1.78 11.71 4.67c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2.48 2.48c-.18.18-.43.29-.71.29-.27 0-.52-.11-.7-.28-.79-.74-1.69-1.36-2.67-1.85-.33-.16-.56-.5-.56-.9v-3.1C15.15 9.25 13.6 9 12 9z\"}}]})(props);\n};\nexport function MdCallMade (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5z\"}}]})(props);\n};\nexport function MdCallMerge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z\"}}]})(props);\n};\nexport function MdCallMissed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.59 7L12 14.59 6.41 9H11V7H3v8h2v-4.59l7 7 9-9z\"}}]})(props);\n};\nexport function MdCallMissedOutgoing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 8.41l9 9 7-7V15h2V7h-8v2h4.59L12 14.59 4.41 7 3 8.41z\"}}]})(props);\n};\nexport function MdCallReceived (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5.41L18.59 4 7 15.59V9H5v10h10v-2H8.41z\"}}]})(props);\n};\nexport function MdCallSplit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z\"}}]})(props);\n};\nexport function MdChat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 9h12v2H6V9zm8 5H6v-2h8v2zm4-6H6V6h12v2z\"}}]})(props);\n};\nexport function MdChatBubble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdChatBubbleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\"}}]})(props);\n};\nexport function MdClearAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 13h14v-2H5v2zm-2 4h14v-2H3v2zM7 7v2h14V7H7z\"}}]})(props);\n};\nexport function MdComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18zM18 14H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\"}}]})(props);\n};\nexport function MdContactMail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 8V7l-3 2-3-2v1l3 2 3-2zm1-5H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm8-6h-8V6h8v6z\"}}]})(props);\n};\nexport function MdContactPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm3.85-4h1.64L21 16l-1.99 1.99c-1.31-.98-2.28-2.38-2.73-3.99-.18-.64-.28-1.31-.28-2s.1-1.36.28-2c.45-1.62 1.42-3.01 2.73-3.99L21 8l-1.51 2h-1.64c-.22.63-.35 1.3-.35 2s.13 1.37.35 2z\"}}]})(props);\n};\nexport function MdContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 0H4v2h16V0zM4 24h16v-2H4v2zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 2.75c1.24 0 2.25 1.01 2.25 2.25s-1.01 2.25-2.25 2.25S9.75 10.24 9.75 9 10.76 6.75 12 6.75zM17 17H7v-1.5c0-1.67 3.33-2.5 5-2.5s5 .83 5 2.5V17z\"}}]})(props);\n};\nexport function MdDialerSip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3h-1v5h1V3zm-2 2h-2V4h2V3h-3v3h2v1h-2v1h3V5zm3-2v5h1V6h2V3h-3zm2 2h-1V4h1v1zm0 10.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.01.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.27-.26.35-.65.24-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdDialpad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 19c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM6 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-6 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdEmail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"}}]})(props);\n};\nexport function MdForum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z\"}}]})(props);\n};\nexport function MdImportContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\"}}]})(props);\n};\nexport function MdImportExport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z\"}}]})(props);\n};\nexport function MdInvertColorsOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.65 20.87l-2.35-2.35-6.3-6.29-3.56-3.57-1.42-1.41L4.27 4.5 3 5.77l2.78 2.78c-2.55 3.14-2.36 7.76.56 10.69C7.9 20.8 9.95 21.58 12 21.58c1.79 0 3.57-.59 5.03-1.78l2.7 2.7L21 21.23l-.35-.36zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 16.69 6 15.19 6 13.59c0-1.32.43-2.57 1.21-3.6L12 14.77v4.82zM12 5.1v4.58l7.25 7.26c1.37-2.96.84-6.57-1.6-9.01L12 2.27l-3.7 3.7 1.41 1.41L12 5.1z\"}}]})(props);\n};\nexport function MdLiveHelp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h4l3 3 3-3h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-6 16h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 11.9 13 12.5 13 14h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"}}]})(props);\n};\nexport function MdLocationOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6.5c1.38 0 2.5 1.12 2.5 2.5 0 .74-.33 1.39-.83 1.85l3.63 3.63c.98-1.86 1.7-3.8 1.7-5.48 0-3.87-3.13-7-7-7-1.98 0-3.76.83-5.04 2.15l3.19 3.19c.46-.52 1.11-.84 1.85-.84zm4.37 9.6l-4.63-4.63-.11-.11L3.27 3 2 4.27l3.18 3.18C5.07 7.95 5 8.47 5 9c0 5.25 7 13 7 13s1.67-1.85 3.38-4.35L18.73 21 20 19.73l-3.63-3.63z\"}}]})(props);\n};\nexport function MdLocationOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function MdMailOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"}}]})(props);\n};\nexport function MdMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\"}}]})(props);\n};\nexport function MdNoSim (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.99 5c0-1.1-.89-2-1.99-2h-7L7.66 5.34 19 16.68 18.99 5zM3.65 3.88L2.38 5.15 5 7.77V19c0 1.1.9 2 2 2h10.01c.35 0 .67-.1.96-.26l1.88 1.88 1.27-1.27L3.65 3.88z\"}}]})(props);\n};\nexport function MdPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"}}]})(props);\n};\nexport function MdPhonelinkErase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 8.2l-1-1-4 4-4-4-1 1 4 4-4 4 1 1 4-4 4 4 1-1-4-4 4-4zM19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdPhonelinkLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm-8.2 10V9.5C10.8 8.1 9.4 7 8 7S5.2 8.1 5.2 9.5V11c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3zm-1.3 0h-3V9.5c0-.8.7-1.3 1.5-1.3s1.5.5 1.5 1.3V11z\"}}]})(props);\n};\nexport function MdPhonelinkRing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.1 7.7l-1 1c1.8 1.8 1.8 4.6 0 6.5l1 1c2.5-2.3 2.5-6.1 0-8.5zM18 9.8l-1 1c.5.7.5 1.6 0 2.3l1 1c1.2-1.2 1.2-3 0-4.3zM14 1H4c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 19H4V4h10v16z\"}}]})(props);\n};\nexport function MdPhonelinkSetup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.8 12.5v-1l1.1-.8c.1-.1.1-.2.1-.3l-1-1.7c-.1-.1-.2-.2-.3-.1l-1.3.4c-.3-.2-.6-.4-.9-.5l-.2-1.3c0-.1-.1-.2-.3-.2H7c-.1 0-.2.1-.3.2l-.2 1.3c-.3.1-.6.3-.9.5l-1.3-.5c-.1 0-.2 0-.3.1l-1 1.7c-.1.1 0 .2.1.3l1.1.8v1l-1.1.8c-.1.2-.1.3-.1.4l1 1.7c.1.1.2.2.3.1l1.4-.4c.3.2.6.4.9.5l.2 1.3c-.1.1.1.2.2.2h2c.1 0 .2-.1.3-.2l.2-1.3c.3-.1.6-.3.9-.5l1.3.5c.1 0 .2 0 .3-.1l1-1.7c.1-.1 0-.2-.1-.3l-1.1-.9zM8 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM19 1H9c-1.1 0-2 .9-2 2v3h2V4h10v16H9v-2H7v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdPortableWifiOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.56 14.24c.28-.69.44-1.45.44-2.24 0-3.31-2.69-6-6-6-.79 0-1.55.16-2.24.44l1.62 1.62c.2-.03.41-.06.62-.06 2.21 0 4 1.79 4 4 0 .21-.02.42-.05.63l1.61 1.61zM12 4c4.42 0 8 3.58 8 8 0 1.35-.35 2.62-.95 3.74l1.47 1.47C21.46 15.69 22 13.91 22 12c0-5.52-4.48-10-10-10-1.91 0-3.69.55-5.21 1.47l1.46 1.46C9.37 4.34 10.65 4 12 4zM3.27 2.5L2 3.77l2.1 2.1C2.79 7.57 2 9.69 2 12c0 3.7 2.01 6.92 4.99 8.65l1-1.73C5.61 17.53 4 14.96 4 12c0-1.76.57-3.38 1.53-4.69l1.43 1.44C6.36 9.68 6 10.8 6 12c0 2.22 1.21 4.15 3 5.19l1-1.74c-1.19-.7-2-1.97-2-3.45 0-.65.17-1.25.44-1.79l1.58 1.58L10 12c0 1.1.9 2 2 2l.21-.02.01.01 7.51 7.51L21 20.23 4.27 3.5l-1-1z\"}}]})(props);\n};\nexport function MdPresentToAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v14c0 1.11.89 2 2 2h18c1.11 0 2-.89 2-2V5c0-1.11-.89-2-2-2zm0 16.02H3V4.98h18v14.04zM10 12H8l4-4 4 4h-2v4h-4v-4z\"}}]})(props);\n};\nexport function MdRingVolume (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23.71 16.67C20.66 13.78 16.54 12 12 12 7.46 12 3.34 13.78.29 16.67c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73s3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.66 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71 0-.27-.11-.52-.29-.7zM21.16 6.26l-1.41-1.41-3.56 3.55 1.41 1.41s3.45-3.52 3.56-3.55zM13 2h-2v5h2V2zM6.4 9.81L7.81 8.4 4.26 4.84 2.84 6.26c.11.03 3.56 3.55 3.56 3.55z\"}}]})(props);\n};\nexport function MdRssFeed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"6.18\",\"cy\":\"17.82\",\"r\":\"2.18\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z\"}}]})(props);\n};\nexport function MdScreenShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.11-.9-2-2-2H4c-1.11 0-2 .89-2 2v10c0 1.1.89 2 2 2H0v2h24v-2h-4zm-7-3.53v-2.19c-2.78 0-4.61.85-6 2.72.56-2.67 2.11-5.33 6-5.87V7l4 3.73-4 3.74z\"}}]})(props);\n};\nexport function MdSpeakerPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 7.07L8.43 8.5c.91-.91 2.18-1.48 3.57-1.48s2.66.57 3.57 1.48L17 7.07C15.72 5.79 13.95 5 12 5s-3.72.79-5 2.07zM12 1C8.98 1 6.24 2.23 4.25 4.21l1.41 1.41C7.28 4 9.53 3 12 3s4.72 1 6.34 2.62l1.41-1.41C17.76 2.23 15.02 1 12 1zm2.86 9.01L9.14 10C8.51 10 8 10.51 8 11.14v9.71c0 .63.51 1.14 1.14 1.14h5.71c.63 0 1.14-.51 1.14-1.14v-9.71c.01-.63-.5-1.13-1.13-1.13zM15 20H9v-8h6v8z\"}}]})(props);\n};\nexport function MdStayCurrentLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1.01 7L1 17c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2H3c-1.1 0-1.99.9-1.99 2zM19 7v10H5V7h14z\"}}]})(props);\n};\nexport function MdStayCurrentPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 1.01L7 1c-1.1 0-1.99.9-1.99 2v18c0 1.1.89 2 1.99 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z\"}}]})(props);\n};\nexport function MdStayPrimaryLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1.01 7L1 17c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2H3c-1.1 0-1.99.9-1.99 2zM19 7v10H5V7h14z\"}}]})(props);\n};\nexport function MdStayPrimaryPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 1.01L7 1c-1.1 0-1.99.9-1.99 2v18c0 1.1.89 2 1.99 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z\"}}]})(props);\n};\nexport function MdStopScreenShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.22 18.02l2 2H24v-2h-2.78zm.77-2l.01-10c0-1.11-.9-2-2-2H7.22l5.23 5.23c.18-.04.36-.07.55-.1V7.02l4 3.73-1.58 1.47 5.54 5.54c.61-.33 1.03-.99 1.03-1.74zM2.39 1.73L1.11 3l1.54 1.54c-.4.36-.65.89-.65 1.48v10c0 1.1.89 2 2 2H0v2h18.13l2.71 2.71 1.27-1.27L2.39 1.73zM7 15.02c.31-1.48.92-2.95 2.07-4.06l1.59 1.59c-1.54.38-2.7 1.18-3.66 2.47z\"}}]})(props);\n};\nexport function MdSwapCalls (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4l-4 4h3v7c0 1.1-.9 2-2 2s-2-.9-2-2V8c0-2.21-1.79-4-4-4S5 5.79 5 8v7H2l4 4 4-4H7V8c0-1.1.9-2 2-2s2 .9 2 2v7c0 2.21 1.79 4 4 4s4-1.79 4-4V8h3l-4-4z\"}}]})(props);\n};\nexport function MdTextsms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 11H7V9h2v2zm4 0h-2V9h2v2zm4 0h-2V9h2v2z\"}}]})(props);\n};\nexport function MdVoicemail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 6C15.46 6 13 8.46 13 11.5c0 1.33.47 2.55 1.26 3.5H9.74c.79-.95 1.26-2.17 1.26-3.5C11 8.46 8.54 6 5.5 6S0 8.46 0 11.5 2.46 17 5.5 17h13c3.04 0 5.5-2.46 5.5-5.5S21.54 6 18.5 6zm-13 9C3.57 15 2 13.43 2 11.5S3.57 8 5.5 8 9 9.57 9 11.5 7.43 15 5.5 15zm13 0c-1.93 0-3.5-1.57-3.5-3.5S16.57 8 18.5 8 22 9.57 22 11.5 20.43 15 18.5 15z\"}}]})(props);\n};\nexport function MdVpnKey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"}}]})(props);\n};\nexport function MdAddBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"}}]})(props);\n};\nexport function MdAddCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"}}]})(props);\n};\nexport function MdAddCircleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdArchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z\"}}]})(props);\n};\nexport function MdBackspace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12 19 15.59z\"}}]})(props);\n};\nexport function MdBlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdClear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"}}]})(props);\n};\nexport function MdContentCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"}}]})(props);\n};\nexport function MdContentCut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z\"}}]})(props);\n};\nexport function MdContentPaste (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z\"}}]})(props);\n};\nexport function MdCreate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"}}]})(props);\n};\nexport function MdDeleteSweep (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 16h4v2h-4zm0-8h7v2h-7zm0 4h6v2h-6zM3 18c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V8H3v10zM14 5h-3l-1-1H6L5 5H2v2h12z\"}}]})(props);\n};\nexport function MdDrafts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zM12 13L3.74 7.84 12 3l8.26 4.84L12 13z\"}}]})(props);\n};\nexport function MdFilterList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"}}]})(props);\n};\nexport function MdFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z\"}}]})(props);\n};\nexport function MdFontDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"baseProfile\":\"tiny\",\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-4.05 16.5l-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5.11 13h-2.09z\"}}]})(props);\n};\nexport function MdForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8V4l8 8-8 8v-4H4V8z\"}}]})(props);\n};\nexport function MdGesture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4.59 6.89c.7-.71 1.4-1.35 1.71-1.22.5.2 0 1.03-.3 1.52-.25.42-2.86 3.89-2.86 6.31 0 1.28.48 2.34 1.34 2.98.75.56 1.74.73 2.64.46 1.07-.31 1.95-1.4 3.06-2.77 1.21-1.49 2.83-3.44 4.08-3.44 1.63 0 1.65 1.01 1.76 1.79-3.78.64-5.38 3.67-5.38 5.37 0 1.7 1.44 3.09 3.21 3.09 1.63 0 4.29-1.33 4.69-6.1H21v-2.5h-2.47c-.15-1.65-1.09-4.2-4.03-4.2-2.25 0-4.18 1.91-4.94 2.84-.58.73-2.06 2.48-2.29 2.72-.25.3-.68.84-1.11.84-.45 0-.72-.83-.36-1.92.35-1.09 1.4-2.86 1.85-3.52.78-1.14 1.3-1.92 1.3-3.28C8.95 3.69 7.31 3 6.44 3 5.12 3 3.97 4 3.72 4.25c-.36.36-.66.66-.88.93l1.75 1.71zm9.29 11.66c-.31 0-.74-.26-.74-.72 0-.6.73-2.2 2.87-2.76-.3 2.69-1.43 3.48-2.13 3.48z\"}}]})(props);\n};\nexport function MdInbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z\"}}]})(props);\n};\nexport function MdLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"}}]})(props);\n};\nexport function MdLowPriority (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 5h8v2h-8zm0 5.5h8v2h-8zm0 5.5h8v2h-8zM2 11.5C2 15.08 4.92 18 8.5 18H9v2l3-3-3-3v2h-.5C6.02 16 4 13.98 4 11.5S6.02 7 8.5 7H12V5H8.5C4.92 5 2 7.92 2 11.5z\"}}]})(props);\n};\nexport function MdMail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"}}]})(props);\n};\nexport function MdMarkunread (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"}}]})(props);\n};\nexport function MdMoveToInbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H4.99c-1.11 0-1.98.9-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10zm-3-5h-2V7h-4v3H8l4 4 4-4z\"}}]})(props);\n};\nexport function MdNextWeek (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 7h-4V5c0-.55-.22-1.05-.59-1.41C15.05 3.22 14.55 3 14 3h-4c-1.1 0-2 .9-2 2v2H4c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zM10 5h4v2h-4V5zm1 13.5l-1-1 3-3-3-3 1-1 4 4-4 4z\"}}]})(props);\n};\nexport function MdRedo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\"}}]})(props);\n};\nexport function MdRemove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 13H5v-2h14v2z\"}}]})(props);\n};\nexport function MdRemoveCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z\"}}]})(props);\n};\nexport function MdRemoveCircleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdReply (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z\"}}]})(props);\n};\nexport function MdReplyAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 8V5l-7 7 7 7v-3l-4-4 4-4zm6 1V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z\"}}]})(props);\n};\nexport function MdReport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM12 17.3c-.72 0-1.3-.58-1.3-1.3 0-.72.58-1.3 1.3-1.3.72 0 1.3.58 1.3 1.3 0 .72-.58 1.3-1.3 1.3zm1-4.3h-2V7h2v6z\"}}]})(props);\n};\nexport function MdSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"}}]})(props);\n};\nexport function MdSelectAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z\"}}]})(props);\n};\nexport function MdSend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"}}]})(props);\n};\nexport function MdSort (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z\"}}]})(props);\n};\nexport function MdTextFormat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z\"}}]})(props);\n};\nexport function MdUnarchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.55 5.22l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.49-.17-.93-.45-1.28zM12 9.5l5.5 5.5H14v2h-4v-2H6.5L12 9.5zM5.12 5l.82-1h12l.93 1H5.12z\"}}]})(props);\n};\nexport function MdUndo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\"}}]})(props);\n};\nexport function MdWeekend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 10c-1.1 0-2 .9-2 2v3H5v-3c0-1.1-.9-2-2-2s-2 .9-2 2v5c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2zm-3-5H6c-1.1 0-2 .9-2 2v2.15c1.16.41 2 1.51 2 2.82V14h12v-2.03c0-1.3.84-2.4 2-2.82V7c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdAccessAlarm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdAccessAlarms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 5.7l-4.6-3.9-1.3 1.5 4.6 3.9L22 5.7zM7.9 3.4L6.6 1.9 2 5.7l1.3 1.5 4.6-3.8zM12.5 8H11v6l4.7 2.9.8-1.2-4-2.4V8zM12 4c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7z\"}}]})(props);\n};\nexport function MdAccessTime (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"}}]})(props);\n};\nexport function MdAddAlarm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm1-11h-2v3H8v2h3v3h2v-3h3v-2h-3V9z\"}}]})(props);\n};\nexport function MdAirplanemodeActive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.18 9\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"}}]})(props);\n};\nexport function MdAirplanemodeInactive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 9V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5v3.68l7.83 7.83L21 16v-2l-8-5zM3 5.27l4.99 4.99L2 14v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-3.73L18.73 21 20 19.73 4.27 4 3 5.27z\"}}]})(props);\n};\nexport function MdBattery20 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 17v3.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V17H7z\"}},{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V17h10V5.33z\"}}]})(props);\n};\nexport function MdBattery30 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V15h10V5.33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 15v5.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V15H7z\"}}]})(props);\n};\nexport function MdBattery50 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V13h10V5.33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 13v7.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V13H7z\"}}]})(props);\n};\nexport function MdBattery60 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V11h10V5.33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11v9.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V11H7z\"}}]})(props);\n};\nexport function MdBattery80 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V9h10V5.33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 9v11.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V9H7z\"}}]})(props);\n};\nexport function MdBattery90 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M17 5.33C17 4.6 16.4 4 15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V8h10V5.33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 8v12.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V8H7z\"}}]})(props);\n};\nexport function MdBatteryAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM13 18h-2v-2h2v2zm0-4h-2V9h2v5z\"}}]})(props);\n};\nexport function MdBatteryCharging20 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 20v-3H7v3.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V17h-4.4L11 20z\"}},{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V17h4v-2.5H9L13 7v5.5h2L12.6 17H17V5.33C17 4.6 16.4 4 15.67 4z\"}}]})(props);\n};\nexport function MdBatteryCharging30 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v9.17h2L13 7v5.5h2l-1.07 2H17V5.33C17 4.6 16.4 4 15.67 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 20v-5.5H7v6.17C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V14.5h-3.07L11 20z\"}}]})(props);\n};\nexport function MdBatteryCharging50 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.47 13.5L11 20v-5.5H9l.53-1H7v7.17C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V13.5h-2.53z\"}},{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v8.17h2.53L13 7v5.5h2l-.53 1H17V5.33C17 4.6 16.4 4 15.67 4z\"}}]})(props);\n};\nexport function MdBatteryCharging60 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V11h3.87L13 7v4h4V5.33C17 4.6 16.4 4 15.67 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12.5h2L11 20v-5.5H9l1.87-3.5H7v9.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V11h-4v1.5z\"}}]})(props);\n};\nexport function MdBatteryCharging80 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V9h4.93L13 7v2h4V5.33C17 4.6 16.4 4 15.67 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12.5h2L11 20v-5.5H9L11.93 9H7v11.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V9h-4v3.5z\"}}]})(props);\n};\nexport function MdBatteryCharging90 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33V8h5.47L13 7v1h4V5.33C17 4.6 16.4 4 15.67 4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13 12.5h2L11 20v-5.5H9L12.47 8H7v12.67C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V8h-4v4.5z\"}}]})(props);\n};\nexport function MdBatteryChargingFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM11 20v-5.5H9L13 7v5.5h2L11 20z\"}}]})(props);\n};\nexport function MdBatteryFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4z\"}}]})(props);\n};\nexport function MdBatteryStd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4z\"}}]})(props);\n};\nexport function MdBatteryUnknown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zm-2.72 13.95h-1.9v-1.9h1.9v1.9zm1.35-5.26s-.38.42-.67.71c-.48.48-.83 1.15-.83 1.6h-1.6c0-.83.46-1.52.93-2l.93-.94c.27-.27.44-.65.44-1.06 0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5H9c0-1.66 1.34-3 3-3s3 1.34 3 3c0 .66-.27 1.26-.7 1.69z\"}}]})(props);\n};\nexport function MdBluetooth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.71 7.71L12 2h-1v7.59L6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 5.83l1.88 1.88L13 9.59V5.83zm1.88 10.46L13 18.17v-3.76l1.88 1.88z\"}}]})(props);\n};\nexport function MdBluetoothConnected (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 12l-2-2-2 2 2 2 2-2zm10.71-4.29L12 2h-1v7.59L6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 5.83l1.88 1.88L13 9.59V5.83zm1.88 10.46L13 18.17v-3.76l1.88 1.88zM19 10l-2 2 2 2 2-2-2-2z\"}}]})(props);\n};\nexport function MdBluetoothDisabled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 5.83l1.88 1.88-1.6 1.6 1.41 1.41 3.02-3.02L12 2h-1v5.03l2 2v-3.2zM5.41 4L4 5.41 10.59 12 5 17.59 6.41 19 11 14.41V22h1l4.29-4.29 2.3 2.29L20 18.59 5.41 4zM13 18.17v-3.76l1.88 1.88L13 18.17z\"}}]})(props);\n};\nexport function MdBluetoothSearching (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.24 12.01l2.32 2.32c.28-.72.44-1.51.44-2.33 0-.82-.16-1.59-.43-2.31l-2.33 2.32zm5.29-5.3l-1.26 1.26c.63 1.21.98 2.57.98 4.02s-.36 2.82-.98 4.02l1.2 1.2c.97-1.54 1.54-3.36 1.54-5.31-.01-1.89-.55-3.67-1.48-5.19zm-3.82 1L10 2H9v7.59L4.41 5 3 6.41 8.59 12 3 17.59 4.41 19 9 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM11 5.83l1.88 1.88L11 9.59V5.83zm1.88 10.46L11 18.17v-3.76l1.88 1.88z\"}}]})(props);\n};\nexport function MdBrightnessAuto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.85 12.65h2.3L12 9l-1.15 3.65zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69zM14.3 16l-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9h-1.9z\"}}]})(props);\n};\nexport function MdBrightnessHigh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdBrightnessLow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.31L23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdBrightnessMedium (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.31L23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69zM12 18V6c3.31 0 6 2.69 6 6s-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdDataUsage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2.05v3.03c3.39.49 6 3.39 6 6.92 0 .9-.18 1.75-.48 2.54l2.6 1.53c.56-1.24.88-2.62.88-4.07 0-5.18-3.95-9.45-9-9.95zM12 19c-3.87 0-7-3.13-7-7 0-3.53 2.61-6.43 6-6.92V2.05c-5.06.5-9 4.76-9 9.95 0 5.52 4.47 10 9.99 10 3.31 0 6.24-1.61 8.06-4.09l-2.6-1.53C16.17 17.98 14.21 19 12 19z\"}}]})(props);\n};\nexport function MdDeveloperMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 5h10v2h2V3c0-1.1-.9-1.99-2-1.99L7 1c-1.1 0-2 .9-2 2v4h2V5zm8.41 11.59L20 12l-4.59-4.59L14 8.83 17.17 12 14 15.17l1.41 1.42zM10 15.17L6.83 12 10 8.83 8.59 7.41 4 12l4.59 4.59L10 15.17zM17 19H7v-2H5v4c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-4h-2v2z\"}}]})(props);\n};\nexport function MdDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h18V4H4c-1.1 0-2 .9-2 2v11H0v3h14v-3H4V6zm19 2h-6c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-1 9h-4v-7h4v7z\"}}]})(props);\n};\nexport function MdDvr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12zm-2-9H8v2h11V8zm0 4H8v2h11v-2zM7 8H5v2h2V8zm0 4H5v2h2v-2z\"}}]})(props);\n};\nexport function MdGpsFixed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdGpsNotFixed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.94 11c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdGpsOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.94 11c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06c-1.13.12-2.19.46-3.16.97l1.5 1.5C10.16 5.19 11.06 5 12 5c3.87 0 7 3.13 7 7 0 .94-.19 1.84-.52 2.65l1.5 1.5c.5-.96.84-2.02.97-3.15H23v-2h-2.06zM3 4.27l2.04 2.04C3.97 7.62 3.25 9.23 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c1.77-.2 3.38-.91 4.69-1.98L19.73 21 21 19.73 4.27 3 3 4.27zm13.27 13.27C15.09 18.45 13.61 19 12 19c-3.87 0-7-3.13-7-7 0-1.61.55-3.09 1.46-4.27l9.81 9.81z\"}}]})(props);\n};\nexport function MdGraphicEq (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 18h2V6H7v12zm4 4h2V2h-2v20zm-8-8h2v-4H3v4zm12 4h2V6h-2v12zm4-8v4h2v-4h-2z\"}}]})(props);\n};\nexport function MdLocationDisabled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.94 11c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06c-1.13.12-2.19.46-3.16.97l1.5 1.5C10.16 5.19 11.06 5 12 5c3.87 0 7 3.13 7 7 0 .94-.19 1.84-.52 2.65l1.5 1.5c.5-.96.84-2.02.97-3.15H23v-2h-2.06zM3 4.27l2.04 2.04C3.97 7.62 3.25 9.23 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c1.77-.2 3.38-.91 4.69-1.98L19.73 21 21 19.73 4.27 3 3 4.27zm13.27 13.27C15.09 18.45 13.61 19 12 19c-3.87 0-7-3.13-7-7 0-1.61.55-3.09 1.46-4.27l9.81 9.81z\"}}]})(props);\n};\nexport function MdLocationSearching (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.94 11c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdNetworkCell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M2 22h20V2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 7L2 22h15z\"}}]})(props);\n};\nexport function MdNetworkWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.53 10.95l8.46 10.54.01.01.01-.01 8.46-10.54C20.04 10.62 16.81 8 12 8c-4.81 0-8.04 2.62-8.47 2.95z\"}}]})(props);\n};\nexport function MdNfc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 18H4V4h16v16zM18 6h-5c-1.1 0-2 .9-2 2v2.28c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V8h3v8H8V8h2V6H6v12h12V6z\"}}]})(props);\n};\nexport function MdScreenLockLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5H3c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-2 12H5V7h14v10zm-9-1h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1v-1c0-1.11-.9-2-2-2-1.11 0-2 .9-2 2v1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1zm.8-6c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2v1h-2.4v-1z\"}}]})(props);\n};\nexport function MdScreenLockPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 16h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1v-1c0-1.11-.9-2-2-2-1.11 0-2 .9-2 2v1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1zm.8-6c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2v1h-2.4v-1zM17 1H7c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 18H7V5h10v14z\"}}]})(props);\n};\nexport function MdScreenLockRotation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23.25 12.77l-2.57-2.57-1.41 1.41 2.22 2.22-5.66 5.66L4.51 8.17l5.66-5.66 2.1 2.1 1.41-1.41L11.23.75c-.59-.59-1.54-.59-2.12 0L2.75 7.11c-.59.59-.59 1.54 0 2.12l12.02 12.02c.59.59 1.54.59 2.12 0l6.36-6.36c.59-.59.59-1.54 0-2.12zM8.47 20.48C5.2 18.94 2.86 15.76 2.5 12H1c.51 6.16 5.66 11 11.95 11l.66-.03-3.81-3.82-1.33 1.33zM16 9h5c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1v-.5C21 1.12 19.88 0 18.5 0S16 1.12 16 2.5V3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm.8-6.5c0-.94.76-1.7 1.7-1.7s1.7.76 1.7 1.7V3h-3.4v-.5z\"}}]})(props);\n};\nexport function MdScreenRotation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.48 2.52c3.27 1.55 5.61 4.72 5.97 8.48h1.5C23.44 4.84 18.29 0 12 0l-.66.03 3.81 3.81 1.33-1.32zm-6.25-.77c-.59-.59-1.54-.59-2.12 0L1.75 8.11c-.59.59-.59 1.54 0 2.12l12.02 12.02c.59.59 1.54.59 2.12 0l6.36-6.36c.59-.59.59-1.54 0-2.12L10.23 1.75zm4.6 19.44L2.81 9.17l6.36-6.36 12.02 12.02-6.36 6.36zm-7.31.29C4.25 19.94 1.91 16.76 1.55 13H.05C.56 19.16 5.71 24 12 24l.66-.03-3.81-3.81-1.33 1.32z\"}}]})(props);\n};\nexport function MdSdStorage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2h-8L4.02 8 4 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-6 6h-2V4h2v4zm3 0h-2V4h2v4zm3 0h-2V4h2v4z\"}}]})(props);\n};\nexport function MdSettingsSystemDaydream (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16h6.5c1.38 0 2.5-1.12 2.5-2.5S16.88 11 15.5 11h-.05c-.24-1.69-1.69-3-3.45-3-1.4 0-2.6.83-3.16 2.02h-.16C7.17 10.18 6 11.45 6 13c0 1.66 1.34 3 3 3zM21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02z\"}}]})(props);\n};\nexport function MdSignalCellular0Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M2 22h20V2z\"}}]})(props);\n};\nexport function MdSignalCellular1Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M2 22h20V2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12L2 22h10z\"}}]})(props);\n};\nexport function MdSignalCellular2Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M2 22h20V2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 10L2 22h12z\"}}]})(props);\n};\nexport function MdSignalCellular3Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M2 22h20V2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 7L2 22h15z\"}}]})(props);\n};\nexport function MdSignalCellular4Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 22h20V2z\"}}]})(props);\n};\nexport function MdSignalCellularConnectedNoInternet0Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M22 8V2L2 22h16V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 22h2v-2h-2v2zm0-12v8h2v-8h-2z\"}}]})(props);\n};\nexport function MdSignalCellularConnectedNoInternet1Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M22 8V2L2 22h16V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20 10v8h2v-8h-2zm-8 12V12L2 22h10zm8 0h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdSignalCellularConnectedNoInternet2Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M22 8V2L2 22h16V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14 22V10L2 22h12zm6-12v8h2v-8h-2zm0 12h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdSignalCellularConnectedNoInternet3Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M22 8V2L2 22h16V8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 22V7L2 22h15zm3-12v8h2v-8h-2zm0 12h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdSignalCellularConnectedNoInternet4Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18h2v-8h-2v8zm0 4h2v-2h-2v2zM2 22h16V8h4V2L2 22z\"}}]})(props);\n};\nexport function MdSignalCellularNoSim (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.99 5c0-1.1-.89-2-1.99-2h-7L7.66 5.34 19 16.68 18.99 5zM3.65 3.88L2.38 5.15 5 7.77V19c0 1.1.9 2 2 2h10.01c.35 0 .67-.1.96-.26l1.88 1.88 1.27-1.27L3.65 3.88z\"}}]})(props);\n};\nexport function MdSignalCellularNull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6.83V20H6.83L20 6.83M22 2L2 22h20V2z\"}}]})(props);\n};\nexport function MdSignalCellularOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 1l-8.59 8.59L21 18.18V1zM4.77 4.5L3.5 5.77l6.36 6.36L1 21h17.73l2 2L22 21.73 4.77 4.5z\"}}]})(props);\n};\nexport function MdSignalWifi0Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}}]})(props);\n};\nexport function MdSignalWifi1Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.67 14.86L12 21.49v.01l.01-.01 5.33-6.63C17.06 14.65 15.03 13 12 13s-5.06 1.65-5.33 1.86z\"}}]})(props);\n};\nexport function MdSignalWifi1BarLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 16v-1.5c0-1.4-1.1-2.5-2.5-2.5S18 13.1 18 14.5V16c-.5 0-1 .5-1 1v4c0 .5.5 1 1 1h5c.5 0 1-.5 1-1v-4c0-.5-.5-1-1-1zm-1 0h-3v-1.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5V16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 14.5c0-2.8 2.2-5 5-5 .4 0 .7 0 1 .1L23.6 7c-.4-.3-4.9-4-11.6-4C5.3 3 .8 6.7.4 7L12 21.5l3.5-4.3v-2.7z\",\"opacity\":\".3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.7 14.9l5.3 6.6 3.5-4.3v-2.6c0-.2 0-.5.1-.7-.9-.5-2.2-.9-3.6-.9-3 0-5.1 1.7-5.3 1.9z\"}}]})(props);\n};\nexport function MdSignalWifi2Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4.79 12.52l7.2 8.98H12l.01-.01 7.2-8.98C18.85 12.24 16.1 10 12 10s-6.85 2.24-7.21 2.52z\"}}]})(props);\n};\nexport function MdSignalWifi2BarLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 16v-1.5c0-1.4-1.1-2.5-2.5-2.5S18 13.1 18 14.5V16c-.5 0-1 .5-1 1v4c0 .5.5 1 1 1h5c.5 0 1-.5 1-1v-4c0-.5-.5-1-1-1zm-1 0h-3v-1.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5V16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 14.5c0-2.8 2.2-5 5-5 .4 0 .7 0 1 .1L23.6 7c-.4-.3-4.9-4-11.6-4C5.3 3 .8 6.7.4 7L12 21.5l3.5-4.3v-2.7z\",\"opacity\":\".3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M4.8 12.5l7.2 9 3.5-4.4v-2.6c0-1.3.5-2.5 1.4-3.4C15.6 10.5 14 10 12 10c-4.1 0-6.8 2.2-7.2 2.5z\"}}]})(props);\n};\nexport function MdSignalWifi3Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".3\",\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.53 10.95l8.46 10.54.01.01.01-.01 8.46-10.54C20.04 10.62 16.81 8 12 8c-4.81 0-8.04 2.62-8.47 2.95z\"}}]})(props);\n};\nexport function MdSignalWifi3BarLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"opacity\":\".3\",\"d\":\"M12 3C5.3 3 .8 6.7.4 7l3.2 3.9L12 21.5l3.5-4.3v-2.6c0-2.2 1.4-4 3.3-4.7.3-.1.5-.2.8-.2.3-.1.6-.1.9-.1.4 0 .7 0 1 .1L23.6 7c-.4-.3-4.9-4-11.6-4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M23 16v-1.5c0-1.4-1.1-2.5-2.5-2.5S18 13.1 18 14.5V16c-.5 0-1 .5-1 1v4c0 .5.5 1 1 1h5c.5 0 1-.5 1-1v-4c0-.5-.5-1-1-1zm-1 0h-3v-1.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5V16zm-10 5.5l3.5-4.3v-2.6c0-2.2 1.4-4 3.3-4.7C17.3 9 14.9 8 12 8c-4.8 0-8 2.6-8.5 2.9\"}}]})(props);\n};\nexport function MdSignalWifi4Bar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.01 21.49L23.64 7c-.45-.34-4.93-4-11.64-4C5.28 3 .81 6.66.36 7l11.63 14.49.01.01.01-.01z\"}}]})(props);\n};\nexport function MdSignalWifi4BarLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 16v-1.5c0-1.4-1.1-2.5-2.5-2.5S18 13.1 18 14.5V16c-.5 0-1 .5-1 1v4c0 .5.5 1 1 1h5c.5 0 1-.5 1-1v-4c0-.5-.5-1-1-1zm-1 0h-3v-1.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5V16zm-6.5-1.5c0-2.8 2.2-5 5-5 .4 0 .7 0 1 .1L23.6 7c-.4-.3-4.9-4-11.6-4C5.3 3 .8 6.7.4 7L12 21.5l3.5-4.4v-2.6z\"}}]})(props);\n};\nexport function MdSignalWifiOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23.64 7c-.45-.34-4.93-4-11.64-4-1.5 0-2.89.19-4.15.48L18.18 13.8 23.64 7zm-6.6 8.22L3.27 1.44 2 2.72l2.05 2.06C1.91 5.76.59 6.82.36 7l11.63 14.49.01.01.01-.01 3.9-4.86 3.32 3.32 1.27-1.27-3.46-3.46z\"}}]})(props);\n};\nexport function MdStorage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 20h20v-4H2v4zm2-3h2v2H4v-2zM2 4v4h20V4H2zm4 3H4V5h2v2zm-4 7h20v-4H2v4zm2-3h2v2H4v-2z\"}}]})(props);\n};\nexport function MdUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7v4h1v2h-3V5h2l-3-4-3 4h2v8H8v-2.07c.7-.37 1.2-1.08 1.2-1.93 0-1.21-.99-2.2-2.2-2.2-1.21 0-2.2.99-2.2 2.2 0 .85.5 1.56 1.2 1.93V13c0 1.11.89 2 2 2h3v3.05c-.71.37-1.2 1.1-1.2 1.95 0 1.22.99 2.2 2.2 2.2 1.21 0 2.2-.98 2.2-2.2 0-.85-.49-1.58-1.2-1.95V15h3c1.11 0 2-.89 2-2v-2h1V7h-4z\"}}]})(props);\n};\nexport function MdWallpaper (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 4h7V2H4c-1.1 0-2 .9-2 2v7h2V4zm6 9l-4 5h12l-3-4-2.03 2.71L10 13zm7-4.5c0-.83-.67-1.5-1.5-1.5S14 7.67 14 8.5s.67 1.5 1.5 1.5S17 9.33 17 8.5zM20 2h-7v2h7v7h2V4c0-1.1-.9-2-2-2zm0 18h-7v2h7c1.1 0 2-.9 2-2v-7h-2v7zM4 13H2v7c0 1.1.9 2 2 2h7v-2H4v-7z\"}}]})(props);\n};\nexport function MdWidgets (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z\"}}]})(props);\n};\nexport function MdWifiLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 9.5c.28 0 .55.04.81.08L24 6c-3.34-2.51-7.5-4-12-4S3.34 3.49 0 6l12 16 3.5-4.67V14.5c0-2.76 2.24-5 5-5zM23 16v-1.5c0-1.38-1.12-2.5-2.5-2.5S18 13.12 18 14.5V16c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm-1 0h-3v-1.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V16z\"}}]})(props);\n};\nexport function MdWifiTethering (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 2c0-3.31-2.69-6-6-6s-6 2.69-6 6c0 2.22 1.21 4.15 3 5.19l1-1.74c-1.19-.7-2-1.97-2-3.45 0-2.21 1.79-4 4-4s4 1.79 4 4c0 1.48-.81 2.75-2 3.45l1 1.74c1.79-1.04 3-2.97 3-5.19zM12 3C6.48 3 2 7.48 2 13c0 3.7 2.01 6.92 4.99 8.65l1-1.73C5.61 18.53 4 15.96 4 13c0-4.42 3.58-8 8-8s8 3.58 8 8c0 2.96-1.61 5.53-4 6.92l1 1.73c2.99-1.73 5-4.95 5-8.65 0-5.52-4.48-10-10-10z\"}}]})(props);\n};\nexport function MdAttachFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"}}]})(props);\n};\nexport function MdAttachMoney (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z\"}}]})(props);\n};\nexport function MdBorderAll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 3v18h18V3H3zm8 16H5v-6h6v6zm0-8H5V5h6v6zm8 8h-6v-6h6v6zm0-8h-6V5h6v6z\"}}]})(props);\n};\nexport function MdBorderBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 11H7v2h2v-2zm4 4h-2v2h2v-2zM9 3H7v2h2V3zm4 8h-2v2h2v-2zM5 3H3v2h2V3zm8 4h-2v2h2V7zm4 4h-2v2h2v-2zm-4-8h-2v2h2V3zm4 0h-2v2h2V3zm2 10h2v-2h-2v2zm0 4h2v-2h-2v2zM5 7H3v2h2V7zm14-4v2h2V3h-2zm0 6h2V7h-2v2zM5 11H3v2h2v-2zM3 21h18v-2H3v2zm2-6H3v2h2v-2z\"}}]})(props);\n};\nexport function MdBorderClear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 5h2V3H7v2zm0 8h2v-2H7v2zm0 8h2v-2H7v2zm4-4h2v-2h-2v2zm0 4h2v-2h-2v2zm-8 0h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2V7H3v2zm0-4h2V3H3v2zm8 8h2v-2h-2v2zm8 4h2v-2h-2v2zm0-4h2v-2h-2v2zm0 8h2v-2h-2v2zm0-12h2V7h-2v2zm-8 0h2V7h-2v2zm8-6v2h2V3h-2zm-8 2h2V3h-2v2zm4 16h2v-2h-2v2zm0-8h2v-2h-2v2zm0-8h2V3h-2v2z\"}}]})(props);\n};\nexport function MdBorderColor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.75 7L14 3.25l-10 10V17h3.75l10-10zm2.96-2.96c.39-.39.39-1.02 0-1.41L18.37.29c-.39-.39-1.02-.39-1.41 0L15 2.25 18.75 6l1.96-1.96z\"}},{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".36\",\"d\":\"M0 20h24v4H0z\"}}]})(props);\n};\nexport function MdBorderHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 21h2v-2H3v2zM5 7H3v2h2V7zM3 17h2v-2H3v2zm4 4h2v-2H7v2zM5 3H3v2h2V3zm4 0H7v2h2V3zm8 0h-2v2h2V3zm-4 4h-2v2h2V7zm0-4h-2v2h2V3zm6 14h2v-2h-2v2zm-8 4h2v-2h-2v2zm-8-8h18v-2H3v2zM19 3v2h2V3h-2zm0 6h2V7h-2v2zm-8 8h2v-2h-2v2zm4 4h2v-2h-2v2zm4 0h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdBorderInner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 21h2v-2H3v2zm4 0h2v-2H7v2zM5 7H3v2h2V7zM3 17h2v-2H3v2zM9 3H7v2h2V3zM5 3H3v2h2V3zm12 0h-2v2h2V3zm2 6h2V7h-2v2zm0-6v2h2V3h-2zm-4 18h2v-2h-2v2zM13 3h-2v8H3v2h8v8h2v-8h8v-2h-8V3zm6 18h2v-2h-2v2zm0-4h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdBorderLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 21h2v-2h-2v2zm0-4h2v-2h-2v2zm0-12h2V3h-2v2zm0 4h2V7h-2v2zm0 4h2v-2h-2v2zm-4 8h2v-2H7v2zM7 5h2V3H7v2zm0 8h2v-2H7v2zm-4 8h2V3H3v18zM19 9h2V7h-2v2zm-4 12h2v-2h-2v2zm4-4h2v-2h-2v2zm0-14v2h2V3h-2zm0 10h2v-2h-2v2zm0 8h2v-2h-2v2zm-4-8h2v-2h-2v2zm0-8h2V3h-2v2z\"}}]})(props);\n};\nexport function MdBorderOuter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v2h2V7zm0 4h-2v2h2v-2zm4 0h-2v2h2v-2zM3 3v18h18V3H3zm16 16H5V5h14v14zm-6-4h-2v2h2v-2zm-4-4H7v2h2v-2z\"}}]})(props);\n};\nexport function MdBorderRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 21h2v-2H7v2zM3 5h2V3H3v2zm4 0h2V3H7v2zm0 8h2v-2H7v2zm-4 8h2v-2H3v2zm8 0h2v-2h-2v2zm-8-8h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm8 8h2v-2h-2v2zm4-4h2v-2h-2v2zm4-10v18h2V3h-2zm-4 18h2v-2h-2v2zm0-16h2V3h-2v2zm-4 8h2v-2h-2v2zm0-8h2V3h-2v2zm0 4h2V7h-2v2z\"}}]})(props);\n};\nexport function MdBorderStyle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 21h2v-2h-2v2zm4 0h2v-2h-2v2zM7 21h2v-2H7v2zm4 0h2v-2h-2v2zm8-4h2v-2h-2v2zm0-4h2v-2h-2v2zM3 3v18h2V5h16V3H3zm16 6h2V7h-2v2z\"}}]})(props);\n};\nexport function MdBorderTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 21h2v-2H7v2zm0-8h2v-2H7v2zm4 0h2v-2h-2v2zm0 8h2v-2h-2v2zm-8-4h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2v-2H3v2zm0-4h2V7H3v2zm8 8h2v-2h-2v2zm8-8h2V7h-2v2zm0 4h2v-2h-2v2zM3 3v2h18V3H3zm16 14h2v-2h-2v2zm-4 4h2v-2h-2v2zM11 9h2V7h-2v2zm8 12h2v-2h-2v2zm-4-8h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdBorderVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9h2V7H3v2zm0-4h2V3H3v2zm4 16h2v-2H7v2zm0-8h2v-2H7v2zm-4 0h2v-2H3v2zm0 8h2v-2H3v2zm0-4h2v-2H3v2zM7 5h2V3H7v2zm12 12h2v-2h-2v2zm-8 4h2V3h-2v18zm8 0h2v-2h-2v2zm0-8h2v-2h-2v2zm0-10v2h2V3h-2zm0 6h2V7h-2v2zm-4-4h2V3h-2v2zm0 16h2v-2h-2v2zm0-8h2v-2h-2v2z\"}}]})(props);\n};\nexport function MdBubbleChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"7.2\",\"cy\":\"14.4\",\"r\":\"3.2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.8\",\"cy\":\"18\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.2\",\"cy\":\"8.8\",\"r\":\"4.8\"}}]})(props);\n};\nexport function MdDragHandle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\"}}]})(props);\n};\nexport function MdFormatAlignCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 15v2h10v-2H7zm-4 6h18v-2H3v2zm0-8h18v-2H3v2zm4-6v2h10V7H7zM3 3v2h18V3H3z\"}}]})(props);\n};\nexport function MdFormatAlignJustify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zm0-6v2h18V3H3z\"}}]})(props);\n};\nexport function MdFormatAlignLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 15H3v2h12v-2zm0-8H3v2h12V7zM3 13h18v-2H3v2zm0 8h18v-2H3v2zM3 3v2h18V3H3z\"}}]})(props);\n};\nexport function MdFormatAlignRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 21h18v-2H3v2zm6-4h12v-2H9v2zm-6-4h18v-2H3v2zm6-4h12V7H9v2zM3 3v2h18V3H3z\"}}]})(props);\n};\nexport function MdFormatBold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.6 10.79c.97-.67 1.65-1.77 1.65-2.79 0-2.26-1.75-4-4-4H7v14h7.04c2.09 0 3.71-1.7 3.71-3.79 0-1.52-.86-2.82-2.15-3.42zM10 6.5h3c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-3v-3zm3.5 9H10v-3h3.5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdFormatClear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.27 5L2 6.27l6.97 6.97L6.5 19h3l1.57-3.66L16.73 21 18 19.73 3.55 5.27 3.27 5zM6 5v.18L8.82 8h2.4l-.72 1.68 2.1 2.1L14.21 8H20V5H6z\"}}]})(props);\n};\nexport function MdFormatColorFill (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.56 8.94L7.62 0 6.21 1.41l2.38 2.38-5.15 5.15c-.59.59-.59 1.54 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12zM5.21 10L10 5.21 14.79 10H5.21zM19 11.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5z\"}},{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".36\",\"d\":\"M0 20h24v4H0z\"}}]})(props);\n};\nexport function MdFormatColorReset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 14c0-4-6-10.8-6-10.8s-1.33 1.51-2.73 3.52l8.59 8.59c.09-.42.14-.86.14-1.31zm-.88 3.12L12.5 12.5 5.27 5.27 4 6.55l3.32 3.32C6.55 11.32 6 12.79 6 14c0 3.31 2.69 6 6 6 1.52 0 2.9-.57 3.96-1.5l2.63 2.63 1.27-1.27-2.74-2.74z\"}}]})(props);\n};\nexport function MdFormatColorText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillOpacity\":\".36\",\"d\":\"M0 20h24v4H0z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11 3L5.5 17h2.25l1.12-3h6.25l1.12 3h2.25L13 3h-2zm-1.38 9L12 5.67 14.38 12H9.62z\"}}]})(props);\n};\nexport function MdFormatIndentDecrease (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 17h10v-2H11v2zm-8-5l4 4V8l-4 4zm0 9h18v-2H3v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z\"}}]})(props);\n};\nexport function MdFormatIndentIncrease (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 21h18v-2H3v2zM3 8v8l4-4-4-4zm8 9h10v-2H11v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z\"}}]})(props);\n};\nexport function MdFormatItalic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4z\"}}]})(props);\n};\nexport function MdFormatLineSpacing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z\"}}]})(props);\n};\nexport function MdFormatListBulleted (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 10.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-6c-.83 0-1.5.67-1.5 1.5S3.17 7.5 4 7.5 5.5 6.83 5.5 6 4.83 4.5 4 4.5zm0 12c-.83 0-1.5.68-1.5 1.5s.68 1.5 1.5 1.5 1.5-.68 1.5-1.5-.67-1.5-1.5-1.5zM7 19h14v-2H7v2zm0-6h14v-2H7v2zm0-8v2h14V5H7z\"}}]})(props);\n};\nexport function MdFormatListNumbered (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 17h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1 3h1.8L2 13.1v.9h3v-1H3.2L5 10.9V10H2v1zm5-6v2h14V5H7zm0 14h14v-2H7v2zm0-6h14v-2H7v2z\"}}]})(props);\n};\nexport function MdFormatPaint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4V3c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6h1v4H9v11c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-9h8V4h-3z\"}}]})(props);\n};\nexport function MdFormatQuote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z\"}}]})(props);\n};\nexport function MdFormatShapes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 7V1h-6v2H7V1H1v6h2v10H1v6h6v-2h10v2h6v-6h-2V7h2zM3 3h2v2H3V3zm2 18H3v-2h2v2zm12-2H7v-2H5V7h2V5h10v2h2v10h-2v2zm4 2h-2v-2h2v2zM19 5V3h2v2h-2zm-5.27 9h-3.49l-.73 2H7.89l3.4-9h1.4l3.41 9h-1.63l-.74-2zm-3.04-1.26h2.61L12 8.91l-1.31 3.83z\"}}]})(props);\n};\nexport function MdFormatSize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 4v3h5v12h3V7h5V4H9zm-6 8h3v7h3v-7h3V9H3v3z\"}}]})(props);\n};\nexport function MdFormatStrikethrough (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 19h4v-3h-4v3zM5 4v3h5v3h4V7h5V4H5zM3 14h18v-2H3v2z\"}}]})(props);\n};\nexport function MdFormatTextdirectionLToR (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 10v5h2V4h2v11h2V4h2V2H9C6.79 2 5 3.79 5 6s1.79 4 4 4zm12 8l-4-4v3H5v2h12v3l4-4z\"}}]})(props);\n};\nexport function MdFormatTextdirectionRToL (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 10v5h2V4h2v11h2V4h2V2h-8C7.79 2 6 3.79 6 6s1.79 4 4 4zm-2 7v-3l-4 4 4 4v-3h12v-2H8z\"}}]})(props);\n};\nexport function MdFormatUnderlined (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17c3.31 0 6-2.69 6-6V3h-2.5v8c0 1.93-1.57 3.5-3.5 3.5S8.5 12.93 8.5 11V3H6v8c0 3.31 2.69 6 6 6zm-7 2v2h14v-2H5z\"}}]})(props);\n};\nexport function MdFunctions (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z\"}}]})(props);\n};\nexport function MdHighlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 14l3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.875L4.914 4.46l2.12 2.122L5.62 7.997zm13.46.71l2.123-2.12 1.414 1.414L18.375 8z\"}}]})(props);\n};\nexport function MdInsertChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdInsertComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\"}}]})(props);\n};\nexport function MdInsertDriveFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 2c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6H6zm7 7V3.5L18.5 9H13z\"}}]})(props);\n};\nexport function MdInsertEmoticon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"}}]})(props);\n};\nexport function MdInsertInvitation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"}}]})(props);\n};\nexport function MdInsertLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"}}]})(props);\n};\nexport function MdInsertPhoto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\"}}]})(props);\n};\nexport function MdLinearScale (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.5 9.5c-1.03 0-1.9.62-2.29 1.5h-2.92c-.39-.88-1.26-1.5-2.29-1.5s-1.9.62-2.29 1.5H6.79c-.39-.88-1.26-1.5-2.29-1.5C3.12 9.5 2 10.62 2 12s1.12 2.5 2.5 2.5c1.03 0 1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5s1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5 1.38 0 2.5-1.12 2.5-2.5s-1.12-2.5-2.5-2.5z\"}}]})(props);\n};\nexport function MdMergeType (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z\"}}]})(props);\n};\nexport function MdModeComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z\"}}]})(props);\n};\nexport function MdModeEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"}}]})(props);\n};\nexport function MdMonetizationOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z\"}}]})(props);\n};\nexport function MdMoneyOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.5 6.9c1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-.53.12-1.03.3-1.48.54l1.47 1.47c.41-.17.91-.27 1.51-.27zM5.33 4.06L4.06 5.33 7.5 8.77c0 2.08 1.56 3.21 3.91 3.91l3.51 3.51c-.34.48-1.05.91-2.42.91-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c.96-.18 1.82-.55 2.45-1.12l2.22 2.22 1.27-1.27L5.33 4.06z\"}}]})(props);\n};\nexport function MdMultilineChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 6.92l-1.41-1.41-2.85 3.21C15.68 6.4 12.83 5 9.61 5 6.72 5 4.07 6.16 2 8l1.42 1.42C5.12 7.93 7.27 7 9.61 7c2.74 0 5.09 1.26 6.77 3.24l-2.88 3.24-4-4L2 16.99l1.5 1.5 6-6.01 4 4 4.05-4.55c.75 1.35 1.25 2.9 1.44 4.55H21c-.22-2.3-.95-4.39-2.04-6.14L22 6.92z\"}}]})(props);\n};\nexport function MdPieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 2v20c-5.07-.5-9-4.79-9-10s3.93-9.5 9-10zm2.03 0v8.99H22c-.47-4.74-4.24-8.52-8.97-8.99zm0 11.01V22c4.74-.47 8.5-4.25 8.97-8.99h-8.97z\"}}]})(props);\n};\nexport function MdPieChartOutlined (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm1 2.07c3.61.45 6.48 3.33 6.93 6.93H13V4.07zM4 12c0-4.06 3.07-7.44 7-7.93v15.87c-3.93-.5-7-3.88-7-7.94zm9 7.93V13h6.93c-.45 3.61-3.32 6.48-6.93 6.93z\"}}]})(props);\n};\nexport function MdPublish (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 4v2h14V4H5zm0 10h4v6h6v-6h4l-7-7-7 7z\"}}]})(props);\n};\nexport function MdShortText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 9h16v2H4zm0 4h10v2H4z\"}}]})(props);\n};\nexport function MdShowChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z\"}}]})(props);\n};\nexport function MdSpaceBar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 9v4H6V9H4v6h16V9z\"}}]})(props);\n};\nexport function MdStrikethroughS (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.24 8.75c-.26-.48-.39-1.03-.39-1.67 0-.61.13-1.16.4-1.67.26-.5.63-.93 1.11-1.29.48-.35 1.05-.63 1.7-.83.66-.19 1.39-.29 2.18-.29.81 0 1.54.11 2.21.34.66.22 1.23.54 1.69.94.47.4.83.88 1.08 1.43.25.55.38 1.15.38 1.81h-3.01c0-.31-.05-.59-.15-.85-.09-.27-.24-.49-.44-.68-.2-.19-.45-.33-.75-.44-.3-.1-.66-.16-1.06-.16-.39 0-.74.04-1.03.13-.29.09-.53.21-.72.36-.19.16-.34.34-.44.55-.1.21-.15.43-.15.66 0 .48.25.88.74 1.21.38.25.77.48 1.41.7H7.39c-.05-.08-.11-.17-.15-.25zM21 12v-2H3v2h9.62c.18.07.4.14.55.2.37.17.66.34.87.51.21.17.35.36.43.57.07.2.11.43.11.69 0 .23-.05.45-.14.66-.09.2-.23.38-.42.53-.19.15-.42.26-.71.35-.29.08-.63.13-1.01.13-.43 0-.83-.04-1.18-.13s-.66-.23-.91-.42c-.25-.19-.45-.44-.59-.75-.14-.31-.25-.76-.25-1.21H6.4c0 .55.08 1.13.24 1.58.16.45.37.85.65 1.21.28.35.6.66.98.92.37.26.78.48 1.22.65.44.17.9.3 1.38.39.48.08.96.13 1.44.13.8 0 1.53-.09 2.18-.28s1.21-.45 1.67-.79c.46-.34.82-.77 1.07-1.27s.38-1.07.38-1.71c0-.6-.1-1.14-.31-1.61-.05-.11-.11-.23-.17-.33H21z\"}}]})(props);\n};\nexport function MdTextFields (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.5 4v3h5v12h3V7h5V4h-13zm19 5h-9v3h3v7h3v-7h3V9z\"}}]})(props);\n};\nexport function MdTitle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 4v3h5.5v12h3V7H19V4z\"}}]})(props);\n};\nexport function MdVerticalAlignBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z\"}}]})(props);\n};\nexport function MdVerticalAlignCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 19h3v4h2v-4h3l-4-4-4 4zm8-14h-3V1h-2v4H8l4 4 4-4zM4 11v2h16v-2H4z\"}}]})(props);\n};\nexport function MdVerticalAlignTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 11h3v10h2V11h3l-4-4-4 4zM4 3v2h16V3H4z\"}}]})(props);\n};\nexport function MdWrapText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3 3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdAttachment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"}}]})(props);\n};\nexport function MdCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z\"}}]})(props);\n};\nexport function MdCloudCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.5 14H8c-1.66 0-3-1.34-3-3s1.34-3 3-3l.14.01C8.58 8.28 10.13 7 12 7c2.21 0 4 1.79 4 4h.5c1.38 0 2.5 1.12 2.5 2.5S17.88 16 16.5 16z\"}}]})(props);\n};\nexport function MdCloudDone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM10 17l-3.5-3.5 1.41-1.41L10 14.17 15.18 9l1.41 1.41L10 17z\"}}]})(props);\n};\nexport function MdCloudDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z\"}}]})(props);\n};\nexport function MdCloudOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73z\"}}]})(props);\n};\nexport function MdCloudQueue (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z\"}}]})(props);\n};\nexport function MdCloudUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z\"}}]})(props);\n};\nexport function MdCreateNewFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z\"}}]})(props);\n};\nexport function MdFileDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"}}]})(props);\n};\nexport function MdFileUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z\"}}]})(props);\n};\nexport function MdFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z\"}}]})(props);\n};\nexport function MdFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z\"}}]})(props);\n};\nexport function MdFolderShared (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-5 3c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm4 8h-8v-1c0-1.33 2.67-2 4-2s4 .67 4 2v1z\"}}]})(props);\n};\nexport function MdCast (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11z\"}}]})(props);\n};\nexport function MdCastConnected (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm18-7H5v1.63c3.96 1.28 7.09 4.41 8.37 8.37H19V7zM1 10v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11zm20-7H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdComputer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z\"}}]})(props);\n};\nexport function MdDesktopMac (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7l-2 3v1h8v-1l-2-3h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 12H3V4h18v10z\"}}]})(props);\n};\nexport function MdDesktopWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z\"}}]})(props);\n};\nexport function MdDeveloperBoard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 9V7h-2V5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H4V5h14v14zM6 13h5v4H6zm6-6h4v3h-4zM6 7h5v5H6zm6 4h4v6h-4z\"}}]})(props);\n};\nexport function MdDeviceHub (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z\"}}]})(props);\n};\nexport function MdDevicesOther (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 6h18V4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4v-2H3V6zm10 6H9v1.78c-.61.55-1 1.33-1 2.22s.39 1.67 1 2.22V20h4v-1.78c.61-.55 1-1.34 1-2.22s-.39-1.67-1-2.22V12zm-2 5.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM22 8h-6c-.5 0-1 .5-1 1v10c0 .5.5 1 1 1h6c.5 0 1-.5 1-1V9c0-.5-.5-1-1-1zm-1 10h-4v-8h4v8z\"}}]})(props);\n};\nexport function MdDock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 23h8v-2H8v2zm8-21.99L8 1c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM16 15H8V5h8v10z\"}}]})(props);\n};\nexport function MdGamepad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z\"}}]})(props);\n};\nexport function MdHeadset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h3c1.66 0 3-1.34 3-3v-7c0-4.97-4.03-9-9-9z\"}}]})(props);\n};\nexport function MdHeadsetMic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h4v1h-7v2h6c1.66 0 3-1.34 3-3V10c0-4.97-4.03-9-9-9z\"}}]})(props);\n};\nexport function MdKeyboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z\"}}]})(props);\n};\nexport function MdKeyboardArrowDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z\"}}]})(props);\n};\nexport function MdKeyboardArrowLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"}}]})(props);\n};\nexport function MdKeyboardArrowRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"}}]})(props);\n};\nexport function MdKeyboardArrowUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\"}}]})(props);\n};\nexport function MdKeyboardBackspace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11H6.83l3.58-3.59L9 6l-6 6 6 6 1.41-1.41L6.83 13H21z\"}}]})(props);\n};\nexport function MdKeyboardCapslock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8.41L16.59 13 18 11.59l-6-6-6 6L7.41 13 12 8.41zM6 18h12v-2H6v2z\"}}]})(props);\n};\nexport function MdKeyboardHide (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4c-1.1 0-1.99.9-1.99 2L2 15c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 3h2v2h-2V6zm0 3h2v2h-2V9zM8 6h2v2H8V6zm0 3h2v2H8V9zm-1 2H5V9h2v2zm0-3H5V6h2v2zm9 7H8v-2h8v2zm0-4h-2V9h2v2zm0-3h-2V6h2v2zm3 3h-2V9h2v2zm0-3h-2V6h2v2zm-7 15l4-4H8l4 4z\"}}]})(props);\n};\nexport function MdKeyboardReturn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"}}]})(props);\n};\nexport function MdKeyboardTab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.59 7.41L15.17 11H1v2h14.17l-3.59 3.59L13 18l6-6-6-6-1.41 1.41zM20 6v12h2V6h-2z\"}}]})(props);\n};\nexport function MdKeyboardVoice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 15c1.66 0 2.99-1.34 2.99-3L15 6c0-1.66-1.34-3-3-3S9 4.34 9 6v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 15 6.7 12H5c0 3.42 2.72 6.23 6 6.72V22h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z\"}}]})(props);\n};\nexport function MdLaptop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z\"}}]})(props);\n};\nexport function MdLaptopChromebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 18V3H2v15H0v2h24v-2h-2zm-8 0h-4v-1h4v1zm6-3H4V5h16v10z\"}}]})(props);\n};\nexport function MdLaptopMac (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18c1.1 0 1.99-.9 1.99-2L22 5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2H0c0 1.1.9 2 2 2h20c1.1 0 2-.9 2-2h-4zM4 5h16v11H4V5zm8 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"}}]})(props);\n};\nexport function MdLaptopWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18v-1c1.1 0 1.99-.9 1.99-2L22 5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2v1H0v2h24v-2h-4zM4 5h16v10H4V5z\"}}]})(props);\n};\nexport function MdMemory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 9H9v6h6V9zm-2 4h-2v-2h2v2zm8-2V9h-2V7c0-1.1-.9-2-2-2h-2V3h-2v2h-2V3H9v2H7c-1.1 0-2 .9-2 2v2H3v2h2v2H3v2h2v2c0 1.1.9 2 2 2h2v2h2v-2h2v2h2v-2h2c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2zm-4 6H7V7h10v10z\"}}]})(props);\n};\nexport function MdMouse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 1.07V9h7c0-4.08-3.05-7.44-7-7.93zM4 15c0 4.42 3.58 8 8 8s8-3.58 8-8v-4H4v4zm7-13.93C7.05 1.56 4 4.92 4 9h7V1.07z\"}}]})(props);\n};\nexport function MdPhoneAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 1H8C6.34 1 5 2.34 5 4v16c0 1.66 1.34 3 3 3h8c1.66 0 3-1.34 3-3V4c0-1.66-1.34-3-3-3zm-2 20h-4v-1h4v1zm3.25-3H6.75V4h10.5v14z\"}}]})(props);\n};\nexport function MdPhoneIphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 1h-8C6.12 1 5 2.12 5 3.5v17C5 21.88 6.12 23 7.5 23h8c1.38 0 2.5-1.12 2.5-2.5v-17C18 2.12 16.88 1 15.5 1zm-4 21c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5-4H7V4h9v14z\"}}]})(props);\n};\nexport function MdPhonelink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6h18V4H4c-1.1 0-2 .9-2 2v11H0v3h14v-3H4V6zm19 2h-6c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-1 9h-4v-7h4v7z\"}}]})(props);\n};\nexport function MdPhonelinkOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 6V4H6.82l2 2H22zM1.92 1.65L.65 2.92l1.82 1.82C2.18 5.08 2 5.52 2 6v11H0v3h17.73l2.35 2.35 1.27-1.27L3.89 3.62 1.92 1.65zM4 6.27L14.73 17H4V6.27zM23 8h-6c-.55 0-1 .45-1 1v4.18l2 2V10h4v7h-2.18l3 3H23c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdPowerInput (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 9v2h19V9H2zm0 6h5v-2H2v2zm7 0h5v-2H9v2zm7 0h5v-2h-5v2z\"}}]})(props);\n};\nexport function MdRouter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.2 5.9l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7zm-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1 .9 0 1.8.3 2.5 1l.8-.8zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zM8 18H6v-2h2v2zm3.5 0h-2v-2h2v2zm3.5 0h-2v-2h2v2z\"}}]})(props);\n};\nexport function MdScanner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.8 10.7L4.2 5l-.7 1.9L17.6 12H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5.5c0-.8-.5-1.6-1.2-1.8zM7 17H5v-2h2v2zm12 0H9v-2h10v2z\"}}]})(props);\n};\nexport function MdSecurity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"}}]})(props);\n};\nexport function MdSimCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.99 4c0-1.1-.89-2-1.99-2h-8L4 8v12c0 1.1.9 2 2 2h12.01c1.1 0 1.99-.9 1.99-2l-.01-16zM9 19H7v-2h2v2zm8 0h-2v-2h2v2zm-8-4H7v-4h2v4zm4 4h-2v-4h2v4zm0-6h-2v-2h2v2zm4 2h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdSmartphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 1.01L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14z\"}}]})(props);\n};\nexport function MdSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 2H7c-1.1 0-2 .9-2 2v16c0 1.1.9 1.99 2 1.99L17 22c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-5 2c1.1 0 2 .9 2 2s-.9 2-2 2c-1.11 0-2-.9-2-2s.89-2 2-2zm0 16c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"}}]})(props);\n};\nexport function MdSpeakerGroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.2 1H9.8C8.81 1 8 1.81 8 2.8v14.4c0 .99.81 1.79 1.8 1.79l8.4.01c.99 0 1.8-.81 1.8-1.8V2.8c0-.99-.81-1.8-1.8-1.8zM14 3c1.1 0 2 .89 2 2s-.9 2-2 2-2-.89-2-2 .9-2 2-2zm0 13.5c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"12.5\",\"r\":\"2.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6 5H4v16c0 1.1.89 2 2 2h10v-2H6V5z\"}}]})(props);\n};\nexport function MdTablet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 1.99-.9 1.99-2L23 6c0-1.1-.9-2-2-2zm-2 14H5V6h14v12z\"}}]})(props);\n};\nexport function MdTabletAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 0H6C4.34 0 3 1.34 3 3v18c0 1.66 1.34 3 3 3h12c1.66 0 3-1.34 3-3V3c0-1.66-1.34-3-3-3zm-4 22h-4v-1h4v1zm5.25-3H4.75V3h14.5v16z\"}}]})(props);\n};\nexport function MdTabletMac (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.5 0h-14C3.12 0 2 1.12 2 2.5v19C2 22.88 3.12 24 4.5 24h14c1.38 0 2.5-1.12 2.5-2.5v-19C21 1.12 19.88 0 18.5 0zm-7 23c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm7.5-4H4V3h15v16z\"}}]})(props);\n};\nexport function MdToys (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12c0-3 2.5-5.5 5.5-5.5S23 9 23 12H12zm0 0c0 3-2.5 5.5-5.5 5.5S1 15 1 12h11zm0 0c-3 0-5.5-2.5-5.5-5.5S9 1 12 1v11zm0 0c3 0 5.5 2.5 5.5 5.5S15 23 12 23V12z\"}}]})(props);\n};\nexport function MdTv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z\"}}]})(props);\n};\nexport function MdVideogameAsset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-10 7H8v3H6v-3H3v-2h3V8h2v3h3v2zm4.5 2c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4-3c-.83 0-1.5-.67-1.5-1.5S18.67 9 19.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdWatch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12c0-2.54-1.19-4.81-3.04-6.27L16 0H8l-.95 5.73C5.19 7.19 4 9.45 4 12s1.19 4.81 3.05 6.27L8 24h8l.96-5.73C18.81 16.81 20 14.54 20 12zM6 12c0-3.31 2.69-6 6-6s6 2.69 6 6-2.69 6-6 6-6-2.69-6-6z\"}}]})(props);\n};\nexport function MdAddAPhoto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4V1h2v3h3v2H5v3H3V6H0V4h3zm3 6V7h3V4h7l1.83 2H21c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V10h3zm7 9c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-3.2-5c0 1.77 1.43 3.2 3.2 3.2s3.2-1.43 3.2-3.2-1.43-3.2-3.2-3.2-3.2 1.43-3.2 3.2z\"}}]})(props);\n};\nexport function MdAddToPhotos (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4h-2v-4H9V9h4V5h2v4h4v2z\"}}]})(props);\n};\nexport function MdAdjust (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-8c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3z\"}}]})(props);\n};\nexport function MdAssistant (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h4l3 3 3-3h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-5.12 10.88L12 17l-1.88-4.12L6 11l4.12-1.88L12 5l1.88 4.12L18 11l-4.12 1.88z\"}}]})(props);\n};\nexport function MdAssistantPhoto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z\"}}]})(props);\n};\nexport function MdAudiotrack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z\"}}]})(props);\n};\nexport function MdBlurCircular (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM7 9.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm3 7c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm-3-3c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm3-6c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM14 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-1.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm3 6c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm0-4c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm2-3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm0-3.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z\"}}]})(props);\n};\nexport function MdBlurLinear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 17.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM9 13c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zM3 21h18v-2H3v2zM5 9.5c.83 0 1.5-.67 1.5-1.5S5.83 6.5 5 6.5 3.5 7.17 3.5 8 4.17 9.5 5 9.5zm0 4c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM9 17c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm8-.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM3 3v2h18V3H3zm14 5.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm0 4c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM13 9c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1z\"}}]})(props);\n};\nexport function MdBlurOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-.2 4.48l.2.02c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5l.02.2c.09.67.61 1.19 1.28 1.28zM14 3.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm-4 0c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm11 7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm8 8c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-4 13.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM2.5 5.27l3.78 3.78L6 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1c0-.1-.03-.19-.06-.28l2.81 2.81c-.71.11-1.25.73-1.25 1.47 0 .83.67 1.5 1.5 1.5.74 0 1.36-.54 1.47-1.25l2.81 2.81c-.09-.03-.18-.06-.28-.06-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1c0-.1-.03-.19-.06-.28l3.78 3.78L20 20.23 3.77 4 2.5 5.27zM10 17c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm11-3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM3 9.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm7 11c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM6 17c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-3-3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5z\"}}]})(props);\n};\nexport function MdBlurOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-3 .5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm15 5.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM14 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-3.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm-11 10c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm7 7c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm0-17c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 5.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm8 .5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3 8.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM14 17c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm-4-12c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 8.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-4.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-4c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function MdBrightness1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}}]})(props);\n};\nexport function MdBrightness2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 2c-1.82 0-3.53.5-5 1.35C7.99 5.08 10 8.3 10 12s-2.01 6.92-5 8.65C6.47 21.5 8.18 22 10 22c5.52 0 10-4.48 10-10S15.52 2 10 2z\"}}]})(props);\n};\nexport function MdBrightness3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 2c-1.05 0-2.05.16-3 .46 4.06 1.27 7 5.06 7 9.54 0 4.48-2.94 8.27-7 9.54.95.3 1.95.46 3 .46 5.52 0 10-4.48 10-10S14.52 2 9 2z\"}}]})(props);\n};\nexport function MdBrightness4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69zM12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6c3.31 0 6 2.69 6 6s-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdBrightness5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.31L23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdBrightness6 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.31L23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69zM12 18V6c3.31 0 6 2.69 6 6s-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdBrightness7 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdBrokenImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5v6.59l-3-3.01-4 4.01-4-4-4 4-3-3.01V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2zm-3 6.42l3 3.01V19c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2v-6.58l3 2.99 4-4 4 4 4-3.99z\"}}]})(props);\n};\nexport function MdBrush (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3zm13.71-9.37l-1.34-1.34c-.39-.39-1.02-.39-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41z\"}}]})(props);\n};\nexport function MdBurstMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 5h2v14H1zm4 0h2v14H5zm17 0H10c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM11 17l2.5-3.15L15.29 16l2.5-3.22L21 17H11z\"}}]})(props);\n};\nexport function MdCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.4 10.5l4.77-8.26C13.47 2.09 12.75 2 12 2c-2.4 0-4.6.85-6.32 2.25l3.66 6.35.06-.1zM21.54 9c-.92-2.92-3.15-5.26-6-6.34L11.88 9h9.66zm.26 1h-7.49l.29.5 4.76 8.25C21 16.97 22 14.61 22 12c0-.69-.07-1.35-.2-2zM8.54 12l-3.9-6.75C3.01 7.03 2 9.39 2 12c0 .69.07 1.35.2 2h7.49l-1.15-2zm-6.08 3c.92 2.92 3.15 5.26 6 6.34L12.12 15H2.46zm11.27 0l-3.9 6.76c.7.15 1.42.24 2.17.24 2.4 0 4.6-.85 6.32-2.25l-3.66-6.35-.93 1.6z\"}}]})(props);\n};\nexport function MdCameraAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3.2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdCameraFront (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 20H5v2h5v2l3-3-3-3v2zm4 0v2h5v-2h-5zM12 8c1.1 0 2-.9 2-2s-.9-2-2-2-1.99.9-1.99 2S10.9 8 12 8zm5-8H7C5.9 0 5 .9 5 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V2c0-1.1-.9-2-2-2zM7 2h10v10.5c0-1.67-3.33-2.5-5-2.5s-5 .83-5 2.5V2z\"}}]})(props);\n};\nexport function MdCameraRear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 20H5v2h5v2l3-3-3-3v2zm4 0v2h5v-2h-5zm3-20H7C5.9 0 5 .9 5 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V2c0-1.1-.9-2-2-2zm-5 6c-1.11 0-2-.9-2-2s.89-2 1.99-2 2 .9 2 2C14 5.1 13.1 6 12 6z\"}}]})(props);\n};\nexport function MdCameraRoll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 5c0-1.1-.9-2-2-2h-1V2c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v1H4c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2h8V5h-8zm-2 13h-2v-2h2v2zm0-9h-2V7h2v2zm4 9h-2v-2h2v2zm0-9h-2V7h2v2zm4 9h-2v-2h2v2zm0-9h-2V7h2v2z\"}}]})(props);\n};\nexport function MdCenterFocusStrong (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm-7 7H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4z\"}}]})(props);\n};\nexport function MdCenterFocusWeak (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdCollections (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z\"}}]})(props);\n};\nexport function MdCollectionsBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 10l-2.5-1.5L15 12V4h5v8z\"}}]})(props);\n};\nexport function MdColorLens (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8zm5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8zm3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdColorize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.71 5.63l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z\"}}]})(props);\n};\nexport function MdCompare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h5v2h2V1h-2v2zm0 15H5l5-6v6zm9-15h-5v2h5v13l-5-6v9h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdControlPoint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdControlPointDuplicate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 8h-2v3h-3v2h3v3h2v-3h3v-2h-3zM2 12c0-2.79 1.64-5.2 4.01-6.32V3.52C2.52 4.76 0 8.09 0 12s2.52 7.24 6.01 8.48v-2.16C3.64 17.2 2 14.79 2 12zm13-9c-4.96 0-9 4.04-9 9s4.04 9 9 9 9-4.04 9-9-4.04-9-9-9zm0 16c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7z\"}}]})(props);\n};\nexport function MdCrop169 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H5V8h14v8z\"}}]})(props);\n};\nexport function MdCrop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8v8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2H7z\"}}]})(props);\n};\nexport function MdCrop32 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 4H5c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H5V6h14v12z\"}}]})(props);\n};\nexport function MdCrop54 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 12H5V7h14v10z\"}}]})(props);\n};\nexport function MdCrop75 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7H5c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zm0 8H5V9h14v6z\"}}]})(props);\n};\nexport function MdCropDin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"}}]})(props);\n};\nexport function MdCropFree (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2zm2 10H3v4c0 1.1.9 2 2 2h4v-2H5v-4zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdCropLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 12H5V7h14v10z\"}}]})(props);\n};\nexport function MdCropOriginal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zm-5.04-6.71l-2.75 3.54-1.96-2.36L6.5 17h11l-3.54-4.71z\"}}]})(props);\n};\nexport function MdCropPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7V5h10v14z\"}}]})(props);\n};\nexport function MdCropRotate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.47 21.49C4.2 19.93 1.86 16.76 1.5 13H0c.51 6.16 5.66 11 11.95 11 .23 0 .44-.02.66-.03L8.8 20.15l-1.33 1.34zM12.05 0c-.23 0-.44.02-.66.04l3.81 3.81 1.33-1.33C19.8 4.07 22.14 7.24 22.5 11H24c-.51-6.16-5.66-11-11.95-11zM16 14h2V8c0-1.11-.9-2-2-2h-6v2h6v6zm-8 2V4H6v2H4v2h2v8c0 1.1.89 2 2 2h8v2h2v-2h2v-2H8z\"}}]})(props);\n};\nexport function MdCropSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H6V6h12v12z\"}}]})(props);\n};\nexport function MdDehaze (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 15.5v2h20v-2H2zm0-5v2h20v-2H2zm0-5v2h20v-2H2z\"}}]})(props);\n};\nexport function MdDetails (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 4l9 16 9-16H3zm3.38 2h11.25L12 16 6.38 6z\"}}]})(props);\n};\nexport function MdEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"}}]})(props);\n};\nexport function MdExposure (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 17v2h2v-2h2v-2h-2v-2h-2v2h-2v2h2zm5-15H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM5 5h6v2H5V5zm15 15H4L20 4v16z\"}}]})(props);\n};\nexport function MdExposureNeg1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 11v2h8v-2H4zm15 7h-2V7.38L14 8.4V6.7L18.7 5h.3v13z\"}}]})(props);\n};\nexport function MdExposureNeg2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.05 16.29l2.86-3.07c.38-.39.72-.79 1.04-1.18.32-.39.59-.78.82-1.17.23-.39.41-.78.54-1.17s.19-.79.19-1.18c0-.53-.09-1.02-.27-1.46-.18-.44-.44-.81-.78-1.11-.34-.31-.77-.54-1.26-.71-.51-.16-1.08-.24-1.72-.24-.69 0-1.31.11-1.85.32-.54.21-1 .51-1.36.88-.37.37-.65.8-.84 1.3-.18.47-.27.97-.28 1.5h2.14c.01-.31.05-.6.13-.87.09-.29.23-.54.4-.75.18-.21.41-.37.68-.49.27-.12.6-.18.96-.18.31 0 .58.05.81.15.23.1.43.25.59.43.16.18.28.4.37.65.08.25.13.52.13.81 0 .22-.03.43-.08.65-.06.22-.15.45-.29.7-.14.25-.32.53-.56.83-.23.3-.52.65-.88 1.03l-4.17 4.55V18H21v-1.71h-5.95zM2 11v2h8v-2H2z\"}}]})(props);\n};\nexport function MdExposurePlus1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 7H8v4H4v2h4v4h2v-4h4v-2h-4V7zm10 11h-2V7.38L15 8.4V6.7L19.7 5h.3v13z\"}}]})(props);\n};\nexport function MdExposurePlus2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.05 16.29l2.86-3.07c.38-.39.72-.79 1.04-1.18.32-.39.59-.78.82-1.17.23-.39.41-.78.54-1.17.13-.39.19-.79.19-1.18 0-.53-.09-1.02-.27-1.46-.18-.44-.44-.81-.78-1.11-.34-.31-.77-.54-1.26-.71-.51-.16-1.08-.24-1.72-.24-.69 0-1.31.11-1.85.32-.54.21-1 .51-1.36.88-.37.37-.65.8-.84 1.3-.18.47-.27.97-.28 1.5h2.14c.01-.31.05-.6.13-.87.09-.29.23-.54.4-.75.18-.21.41-.37.68-.49.27-.12.6-.18.96-.18.31 0 .58.05.81.15.23.1.43.25.59.43.16.18.28.4.37.65.08.25.13.52.13.81 0 .22-.03.43-.08.65-.06.22-.15.45-.29.7-.14.25-.32.53-.56.83-.23.3-.52.65-.88 1.03l-4.17 4.55V18H22v-1.71h-5.95zM8 7H6v4H2v2h4v4h2v-4h4v-2H8V7z\"}}]})(props);\n};\nexport function MdExposureZero (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.14 12.5c0 1-.1 1.85-.3 2.55-.2.7-.48 1.27-.83 1.7-.36.44-.79.75-1.3.95-.51.2-1.07.3-1.7.3-.62 0-1.18-.1-1.69-.3-.51-.2-.95-.51-1.31-.95-.36-.44-.65-1.01-.85-1.7-.2-.7-.3-1.55-.3-2.55v-2.04c0-1 .1-1.85.3-2.55.2-.7.48-1.26.84-1.69.36-.43.8-.74 1.31-.93C10.81 5.1 11.38 5 12 5c.63 0 1.19.1 1.7.29.51.19.95.5 1.31.93.36.43.64.99.84 1.69.2.7.3 1.54.3 2.55v2.04zm-2.11-2.36c0-.64-.05-1.18-.13-1.62-.09-.44-.22-.79-.4-1.06-.17-.27-.39-.46-.64-.58-.25-.13-.54-.19-.86-.19-.32 0-.61.06-.86.18s-.47.31-.64.58c-.17.27-.31.62-.4 1.06s-.13.98-.13 1.62v2.67c0 .64.05 1.18.14 1.62.09.45.23.81.4 1.09s.39.48.64.61.54.19.87.19c.33 0 .62-.06.87-.19s.46-.33.63-.61c.17-.28.3-.64.39-1.09.09-.45.13-.99.13-1.62v-2.66z\"}}]})(props);\n};\nexport function MdFilter1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm11 10h2V5h-4v2h2v8zm7-14H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14z\"}}]})(props);\n};\nexport function MdFilter2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zm-4-4h-4v-2h2c1.1 0 2-.89 2-2V7c0-1.11-.9-2-2-2h-4v2h4v2h-2c-1.1 0-2 .89-2 2v4h6v-2z\"}}]})(props);\n};\nexport function MdFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.96 10.29l-2.75 3.54-1.96-2.36L8.5 15h11l-3.54-4.71zM3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14z\"}}]})(props);\n};\nexport function MdFilter3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 1H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zM3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm14 8v-1.5c0-.83-.67-1.5-1.5-1.5.83 0 1.5-.67 1.5-1.5V7c0-1.11-.9-2-2-2h-4v2h4v2h-2v2h2v2h-4v2h4c1.1 0 2-.89 2-2z\"}}]})(props);\n};\nexport function MdFilter4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm12 10h2V5h-2v4h-2V5h-2v6h4v4zm6-14H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14z\"}}]})(props);\n};\nexport function MdFilter5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 1H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zM3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm14 8v-2c0-1.11-.9-2-2-2h-2V7h4V5h-6v6h4v2h-4v2h4c1.1 0 2-.89 2-2z\"}}]})(props);\n};\nexport function MdFilter6 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zm-8-2h2c1.1 0 2-.89 2-2v-2c0-1.11-.9-2-2-2h-2V7h4V5h-4c-1.1 0-2 .89-2 2v6c0 1.11.9 2 2 2zm0-4h2v2h-2v-2z\"}}]})(props);\n};\nexport function MdFilter7 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zm-8-2l4-8V5h-6v2h4l-4 8h2z\"}}]})(props);\n};\nexport function MdFilter8 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zm-8-2h2c1.1 0 2-.89 2-2v-1.5c0-.83-.67-1.5-1.5-1.5.83 0 1.5-.67 1.5-1.5V7c0-1.11-.9-2-2-2h-2c-1.1 0-2 .89-2 2v1.5c0 .83.67 1.5 1.5 1.5-.83 0-1.5.67-1.5 1.5V13c0 1.11.9 2 2 2zm0-8h2v2h-2V7zm0 4h2v2h-2v-2z\"}}]})(props);\n};\nexport function MdFilter9 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14zM15 5h-2c-1.1 0-2 .89-2 2v2c0 1.11.9 2 2 2h2v2h-4v2h4c1.1 0 2-.89 2-2V7c0-1.11-.9-2-2-2zm0 4h-2V7h2v2z\"}}]})(props);\n};\nexport function MdFilter9Plus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm11 7V8c0-1.11-.9-2-2-2h-1c-1.1 0-2 .89-2 2v1c0 1.11.9 2 2 2h1v1H9v2h3c1.1 0 2-.89 2-2zm-3-3V8h1v1h-1zm10-8H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 8h-2V7h-2v2h-2v2h2v2h2v-2h2v6H7V3h14v6z\"}}]})(props);\n};\nexport function MdFilterBAndW (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16l-7-8v8H5l7-8V5h7v14z\"}}]})(props);\n};\nexport function MdFilterCenterFocus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zM12 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"}}]})(props);\n};\nexport function MdFilterDrama (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.61 5.64 5.36 8.04 2.35 8.36 0 10.9 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4h2c0-2.76-1.86-5.08-4.4-5.78C8.61 6.88 10.2 6 12 6c3.03 0 5.5 2.47 5.5 5.5v.5H19c1.65 0 3 1.35 3 3s-1.35 3-3 3z\"}}]})(props);\n};\nexport function MdFilterFrames (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4h-4l-4-4-4 4H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H4V6h4.52l3.52-3.5L15.52 6H20v14zM18 8H6v10h12\"}}]})(props);\n};\nexport function MdFilterHdr (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 6l-3.75 5 2.85 3.8-1.6 1.2C9.81 13.75 7 10 7 10l-6 8h22L14 6z\"}}]})(props);\n};\nexport function MdFilterNone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14z\"}}]})(props);\n};\nexport function MdFilterTiltShift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 4.07V2.05c-2.01.2-3.84 1-5.32 2.21L7.1 5.69c1.11-.86 2.44-1.44 3.9-1.62zm7.32.19C16.84 3.05 15.01 2.25 13 2.05v2.02c1.46.18 2.79.76 3.9 1.62l1.42-1.43zM19.93 11h2.02c-.2-2.01-1-3.84-2.21-5.32L18.31 7.1c.86 1.11 1.44 2.44 1.62 3.9zM5.69 7.1L4.26 5.68C3.05 7.16 2.25 8.99 2.05 11h2.02c.18-1.46.76-2.79 1.62-3.9zM4.07 13H2.05c.2 2.01 1 3.84 2.21 5.32l1.43-1.43c-.86-1.1-1.44-2.43-1.62-3.89zM15 12c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3zm3.31 4.9l1.43 1.43c1.21-1.48 2.01-3.32 2.21-5.32h-2.02c-.18 1.45-.76 2.78-1.62 3.89zM13 19.93v2.02c2.01-.2 3.84-1 5.32-2.21l-1.43-1.43c-1.1.86-2.43 1.44-3.89 1.62zm-7.32-.19C7.16 20.95 9 21.75 11 21.95v-2.02c-1.46-.18-2.79-.76-3.9-1.62l-1.42 1.43z\"}}]})(props);\n};\nexport function MdFilterVintage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.7 12.4c-.28-.16-.57-.29-.86-.4.29-.11.58-.24.86-.4 1.92-1.11 2.99-3.12 3-5.19-1.79-1.03-4.07-1.11-6 0-.28.16-.54.35-.78.54.05-.31.08-.63.08-.95 0-2.22-1.21-4.15-3-5.19C10.21 1.85 9 3.78 9 6c0 .32.03.64.08.95-.24-.2-.5-.39-.78-.55-1.92-1.11-4.2-1.03-6 0 0 2.07 1.07 4.08 3 5.19.28.16.57.29.86.4-.29.11-.58.24-.86.4-1.92 1.11-2.99 3.12-3 5.19 1.79 1.03 4.07 1.11 6 0 .28-.16.54-.35.78-.54-.05.32-.08.64-.08.96 0 2.22 1.21 4.15 3 5.19 1.79-1.04 3-2.97 3-5.19 0-.32-.03-.64-.08-.95.24.2.5.38.78.54 1.92 1.11 4.2 1.03 6 0-.01-2.07-1.08-4.08-3-5.19zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z\"}}]})(props);\n};\nexport function MdFlare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11H1v2h6v-2zm2.17-3.24L7.05 5.64 5.64 7.05l2.12 2.12 1.41-1.41zM13 1h-2v6h2V1zm5.36 6.05l-1.41-1.41-2.12 2.12 1.41 1.41 2.12-2.12zM17 11v2h6v-2h-6zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24l2.12 2.12 1.41-1.41-2.12-2.12-1.41 1.41zm-9.19.71l1.41 1.41 2.12-2.12-1.41-1.41-2.12 2.12zM11 23h2v-6h-2v6z\"}}]})(props);\n};\nexport function MdFlashAuto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 2v12h3v9l7-12H9l4-9H3zm16 0h-2l-3.2 9h1.9l.7-2h3.2l.7 2h1.9L19 2zm-2.15 5.65L18 4l1.15 3.65h-2.3z\"}}]})(props);\n};\nexport function MdFlashOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.27 3L2 4.27l5 5V13h3v9l3.58-6.14L17.73 20 19 18.73 3.27 3zM17 10h-4l4-8H7v2.18l8.46 8.46L17 10z\"}}]})(props);\n};\nexport function MdFlashOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 2v11h3v9l7-12h-4l4-8z\"}}]})(props);\n};\nexport function MdFlip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z\"}}]})(props);\n};\nexport function MdGradient (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9h2v2h-2zm-2 2h2v2H9zm4 0h2v2h-2zm2-2h2v2h-2zM7 9h2v2H7zm12-6H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 18H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm2-7h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v2H9v-2H7v2H5v-2h2v-2H5V5h14v6z\"}}]})(props);\n};\nexport function MdGrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM6 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-4 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-4-4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-4-4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdGridOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 4v1.45l2 2V4h4v4h-3.45l2 2H14v1.45l2 2V10h4v4h-3.45l2 2H20v1.45l2 2V4c0-1.1-.9-2-2-2H4.55l2 2H8zm8 0h4v4h-4V4zM1.27 1.27L0 2.55l2 2V20c0 1.1.9 2 2 2h15.46l2 2 1.27-1.27L1.27 1.27zM10 12.55L11.45 14H10v-1.45zm-6-6L5.45 8H4V6.55zM8 20H4v-4h4v4zm0-6H4v-4h3.45l.55.55V14zm6 6h-4v-4h3.45l.55.54V20zm2 0v-1.46L17.46 20H16z\"}}]})(props);\n};\nexport function MdGridOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z\"}}]})(props);\n};\nexport function MdHdrOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.5 15v-2h1.1l.9 2H21l-.9-2.1c.5-.2.9-.8.9-1.4v-1c0-.8-.7-1.5-1.5-1.5H16v4.9l1.1 1.1h.4zm0-4.5h2v1h-2v-1zm-4.5 0v.4l1.5 1.5v-1.9c0-.8-.7-1.5-1.5-1.5h-1.9l1.5 1.5h.4zm-3.5-1l-7-7-1.1 1L6.9 9h-.4v2h-2V9H3v6h1.5v-2.5h2V15H8v-4.9l1.5 1.5V15h3.4l7.6 7.6 1.1-1.1-12.1-12z\"}}]})(props);\n};\nexport function MdHdrOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 11.5v-1c0-.8-.7-1.5-1.5-1.5H16v6h1.5v-2h1.1l.9 2H21l-.9-2.1c.5-.3.9-.8.9-1.4zm-1.5 0h-2v-1h2v1zm-13-.5h-2V9H3v6h1.5v-2.5h2V15H8V9H6.5v2zM13 9H9.5v6H13c.8 0 1.5-.7 1.5-1.5v-3c0-.8-.7-1.5-1.5-1.5zm0 4.5h-2v-3h2v3z\"}}]})(props);\n};\nexport function MdHdrStrong (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 6c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zM5 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdHdrWeak (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm12-2c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z\"}}]})(props);\n};\nexport function MdHealing (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.73 12.02l3.98-3.98c.39-.39.39-1.02 0-1.41l-4.34-4.34c-.39-.39-1.02-.39-1.41 0l-3.98 3.98L8 2.29C7.8 2.1 7.55 2 7.29 2c-.25 0-.51.1-.7.29L2.25 6.63c-.39.39-.39 1.02 0 1.41l3.98 3.98L2.25 16c-.39.39-.39 1.02 0 1.41l4.34 4.34c.39.39 1.02.39 1.41 0l3.98-3.98 3.98 3.98c.2.2.45.29.71.29.26 0 .51-.1.71-.29l4.34-4.34c.39-.39.39-1.02 0-1.41l-3.99-3.98zM12 9c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm-4.71 1.96L3.66 7.34l3.63-3.63 3.62 3.62-3.62 3.63zM10 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm2 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm2-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2.66 9.34l-3.63-3.62 3.63-3.63 3.62 3.62-3.62 3.63z\"}}]})(props);\n};\nexport function MdImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\"}}]})(props);\n};\nexport function MdImageAspectRatio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 10h-2v2h2v-2zm0 4h-2v2h2v-2zm-8-4H6v2h2v-2zm4 0h-2v2h2v-2zm8-6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V6h16v12z\"}}]})(props);\n};\nexport function MdIso (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5.5 7.5h2v-2H9v2h2V9H9v2H7.5V9h-2V7.5zM19 19H5L19 5v14zm-2-2v-1.5h-5V17h5z\"}}]})(props);\n};\nexport function MdLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 6l-3.75 5 2.85 3.8-1.6 1.2C9.81 13.75 7 10 7 10l-6 8h22L14 6z\"}}]})(props);\n};\nexport function MdLeakAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 3H3v3c1.66 0 3-1.34 3-3zm8 0h-2c0 4.97-4.03 9-9 9v2c6.08 0 11-4.93 11-11zm-4 0H8c0 2.76-2.24 5-5 5v2c3.87 0 7-3.13 7-7zm0 18h2c0-4.97 4.03-9 9-9v-2c-6.07 0-11 4.93-11 11zm8 0h3v-3c-1.66 0-3 1.34-3 3zm-4 0h2c0-2.76 2.24-5 5-5v-2c-3.87 0-7 3.13-7 7z\"}}]})(props);\n};\nexport function MdLeakRemove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3H8c0 .37-.04.72-.12 1.06l1.59 1.59C9.81 4.84 10 3.94 10 3zM3 4.27l2.84 2.84C5.03 7.67 4.06 8 3 8v2c1.61 0 3.09-.55 4.27-1.46L8.7 9.97C7.14 11.24 5.16 12 3 12v2c2.71 0 5.19-.99 7.11-2.62l2.5 2.5C10.99 15.81 10 18.29 10 21h2c0-2.16.76-4.14 2.03-5.69l1.43 1.43C14.55 17.91 14 19.39 14 21h2c0-1.06.33-2.03.89-2.84L19.73 21 21 19.73 4.27 3 3 4.27zM14 3h-2c0 1.5-.37 2.91-1.02 4.16l1.46 1.46C13.42 6.98 14 5.06 14 3zm5.94 13.12c.34-.08.69-.12 1.06-.12v-2c-.94 0-1.84.19-2.66.52l1.6 1.6zm-4.56-4.56l1.46 1.46C18.09 12.37 19.5 12 21 12v-2c-2.06 0-3.98.58-5.62 1.56z\"}}]})(props);\n};\nexport function MdLens (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z\"}}]})(props);\n};\nexport function MdLinkedCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"14\",\"r\":\"3.2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16 3.33c2.58 0 4.67 2.09 4.67 4.67H22c0-3.31-2.69-6-6-6v1.33M16 6c1.11 0 2 .89 2 2h1.33c0-1.84-1.49-3.33-3.33-3.33V6\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 9c0-1.11-.89-2-2-2V4H9L7.17 6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V9h-5zm-5 10c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdLooks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 10c-3.86 0-7 3.14-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.86-3.14-7-7-7zm0-4C5.93 6 1 10.93 1 17h2c0-4.96 4.04-9 9-9s9 4.04 9 9h2c0-6.07-4.93-11-11-11z\"}}]})(props);\n};\nexport function MdLooks3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.01 3h-14c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 7.5c0 .83-.67 1.5-1.5 1.5.83 0 1.5.67 1.5 1.5V15c0 1.11-.9 2-2 2h-4v-2h4v-2h-2v-2h2V9h-4V7h4c1.1 0 2 .89 2 2v1.5z\"}}]})(props);\n};\nexport function MdLooks4 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 14h-2v-4H9V7h2v4h2V7h2v10z\"}}]})(props);\n};\nexport function MdLooks5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 6h-4v2h2c1.1 0 2 .89 2 2v2c0 1.11-.9 2-2 2H9v-2h4v-2H9V7h6v2z\"}}]})(props);\n};\nexport function MdLooks6 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 15h2v-2h-2v2zm8-12H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 6h-4v2h2c1.1 0 2 .89 2 2v2c0 1.11-.9 2-2 2h-2c-1.1 0-2-.89-2-2V9c0-1.11.9-2 2-2h4v2z\"}}]})(props);\n};\nexport function MdLooksOne (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14h-2V9h-2V7h4v10z\"}}]})(props);\n};\nexport function MdLooksTwo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4 8c0 1.11-.9 2-2 2h-2v2h4v2H9v-4c0-1.11.9-2 2-2h2V9H9V7h4c1.1 0 2 .89 2 2v2z\"}}]})(props);\n};\nexport function MdLoupe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.49 2 2 6.49 2 12s4.49 10 10 10h8c1.1 0 2-.9 2-2v-8c0-5.51-4.49-10-10-10zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdMonochromePhotos (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 5h-3.2L15 3H9L7.2 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 14h-8v-1c-2.8 0-5-2.2-5-5s2.2-5 5-5V7h8v12zm-3-6c0-2.8-2.2-5-5-5v1.8c1.8 0 3.2 1.4 3.2 3.2s-1.4 3.2-3.2 3.2V18c2.8 0 5-2.2 5-5zm-8.2 0c0 1.8 1.4 3.2 3.2 3.2V9.8c-1.8 0-3.2 1.4-3.2 3.2z\"}}]})(props);\n};\nexport function MdMovieCreation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z\"}}]})(props);\n};\nexport function MdMovieFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 4l2 3h-3l-2-3h-2l2 3h-3l-2-3H8l2 3H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4zm-6.75 11.25L10 18l-1.25-2.75L6 14l2.75-1.25L10 10l1.25 2.75L14 14l-2.75 1.25zm5.69-3.31L16 14l-.94-2.06L13 11l2.06-.94L16 8l.94 2.06L19 11l-2.06.94z\"}}]})(props);\n};\nexport function MdMusicNote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"}}]})(props);\n};\nexport function MdNature (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 16.12c3.47-.41 6.17-3.36 6.17-6.95 0-3.87-3.13-7-7-7s-7 3.13-7 7c0 3.47 2.52 6.34 5.83 6.89V20H5v2h14v-2h-6v-3.88z\"}}]})(props);\n};\nexport function MdNaturePeople (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.17 9.17c0-3.87-3.13-7-7-7s-7 3.13-7 7c0 3.47 2.52 6.34 5.83 6.89V20H6v-3h1v-4c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v4h1v5h16v-2h-3v-3.88c3.47-.41 6.17-3.36 6.17-6.95zM4.5 11c.83 0 1.5-.67 1.5-1.5S5.33 8 4.5 8 3 8.67 3 9.5 3.67 11 4.5 11z\"}}]})(props);\n};\nexport function MdNavigateBefore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"}}]})(props);\n};\nexport function MdNavigateNext (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"}}]})(props);\n};\nexport function MdPalette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8zm5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8zm3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdPanorama (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 18V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zM8.5 12.5l2.5 3.01L14.5 11l4.5 6H5l3.5-4.5z\"}}]})(props);\n};\nexport function MdPanoramaFishEye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"}}]})(props);\n};\nexport function MdPanoramaHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6.54v10.91c-2.6-.77-5.28-1.16-8-1.16-2.72 0-5.4.39-8 1.16V6.54c2.6.77 5.28 1.16 8 1.16 2.72.01 5.4-.38 8-1.16M21.43 4c-.1 0-.2.02-.31.06C18.18 5.16 15.09 5.7 12 5.7c-3.09 0-6.18-.55-9.12-1.64-.11-.04-.22-.06-.31-.06-.34 0-.57.23-.57.63v14.75c0 .39.23.62.57.62.1 0 .2-.02.31-.06 2.94-1.1 6.03-1.64 9.12-1.64 3.09 0 6.18.55 9.12 1.64.11.04.21.06.31.06.33 0 .57-.23.57-.63V4.63c0-.4-.24-.63-.57-.63z\"}}]})(props);\n};\nexport function MdPanoramaVertical (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.94 21.12c-1.1-2.94-1.64-6.03-1.64-9.12 0-3.09.55-6.18 1.64-9.12.04-.11.06-.22.06-.31 0-.34-.23-.57-.63-.57H4.63c-.4 0-.63.23-.63.57 0 .1.02.2.06.31C5.16 5.82 5.71 8.91 5.71 12c0 3.09-.55 6.18-1.64 9.12-.05.11-.07.22-.07.31 0 .33.23.57.63.57h14.75c.39 0 .63-.24.63-.57-.01-.1-.03-.2-.07-.31zM6.54 20c.77-2.6 1.16-5.28 1.16-8 0-2.72-.39-5.4-1.16-8h10.91c-.77 2.6-1.16 5.28-1.16 8 0 2.72.39 5.4 1.16 8H6.54z\"}}]})(props);\n};\nexport function MdPanoramaWideAngle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c2.45 0 4.71.2 7.29.64.47 1.78.71 3.58.71 5.36 0 1.78-.24 3.58-.71 5.36-2.58.44-4.84.64-7.29.64s-4.71-.2-7.29-.64C4.24 15.58 4 13.78 4 12c0-1.78.24-3.58.71-5.36C7.29 6.2 9.55 6 12 6m0-2c-2.73 0-5.22.24-7.95.72l-.93.16-.25.9C2.29 7.85 2 9.93 2 12s.29 4.15.87 6.22l.25.89.93.16c2.73.49 5.22.73 7.95.73s5.22-.24 7.95-.72l.93-.16.25-.89c.58-2.08.87-4.16.87-6.23s-.29-4.15-.87-6.22l-.25-.89-.93-.16C17.22 4.24 14.73 4 12 4z\"}}]})(props);\n};\nexport function MdPhoto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\"}}]})(props);\n};\nexport function MdPhotoAlbum (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4zm0 15l3-3.86 2.14 2.58 3-3.86L18 19H6z\"}}]})(props);\n};\nexport function MdPhotoCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3.2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdPhotoFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.02 10v9H5V5h9V3H5.02c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-9h-2zM17 10l.94-2.06L20 7l-2.06-.94L17 4l-.94 2.06L14 7l2.06.94zm-3.75.75L12 8l-1.25 2.75L8 12l2.75 1.25L12 16l1.25-2.75L16 12z\"}}]})(props);\n};\nexport function MdPhotoLibrary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z\"}}]})(props);\n};\nexport function MdPhotoSizeSelectActual (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3C2 3 1 4 1 5v14c0 1.1.9 2 2 2h18c1 0 2-1 2-2V5c0-1-1-2-2-2zM5 17l3.5-4.5 2.5 3.01L14.5 11l4.5 6H5z\"}}]})(props);\n};\nexport function MdPhotoSizeSelectLarge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 15h2v2h-2v-2zm0-4h2v2h-2v-2zm2 8h-2v2c1 0 2-1 2-2zM13 3h2v2h-2V3zm8 4h2v2h-2V7zm0-4v2h2c0-1-1-2-2-2zM1 7h2v2H1V7zm16-4h2v2h-2V3zm0 16h2v2h-2v-2zM3 3C2 3 1 4 1 5h2V3zm6 0h2v2H9V3zM5 3h2v2H5V3zm-4 8v8c0 1.1.9 2 2 2h12V11H1zm2 8l2.5-3.21 1.79 2.15 2.5-3.22L13 19H3z\"}}]})(props);\n};\nexport function MdPhotoSizeSelectSmall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23 15h-2v2h2v-2zm0-4h-2v2h2v-2zm0 8h-2v2c1 0 2-1 2-2zM15 3h-2v2h2V3zm8 4h-2v2h2V7zm-2-4v2h2c0-1-1-2-2-2zM3 21h8v-6H1v4c0 1.1.9 2 2 2zM3 7H1v2h2V7zm12 12h-2v2h2v-2zm4-16h-2v2h2V3zm0 16h-2v2h2v-2zM3 3C2 3 1 4 1 5h2V3zm0 8H1v2h2v-2zm8-8H9v2h2V3zM7 3H5v2h2V3z\"}}]})(props);\n};\nexport function MdPictureAsPdf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.5 7.5c0 .83-.67 1.5-1.5 1.5H9v2H7.5V7H10c.83 0 1.5.67 1.5 1.5v1zm5 2c0 .83-.67 1.5-1.5 1.5h-2.5V7H15c.83 0 1.5.67 1.5 1.5v3zm4-3H19v1h1.5V11H19v2h-1.5V7h3v1.5zM9 9.5h1v-1H9v1zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm10 5.5h1v-3h-1v3z\"}}]})(props);\n};\nexport function MdPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12.25c1.24 0 2.25-1.01 2.25-2.25S13.24 7.75 12 7.75 9.75 8.76 9.75 10s1.01 2.25 2.25 2.25zm4.5 4c0-1.5-3-2.25-4.5-2.25s-4.5.75-4.5 2.25V17h9v-.75zM19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"}}]})(props);\n};\nexport function MdRemoveRedEye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"}}]})(props);\n};\nexport function MdRotate90DegreesCcw (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.34 6.41L.86 12.9l6.49 6.48 6.49-6.48-6.5-6.49zM3.69 12.9l3.66-3.66L11 12.9l-3.66 3.66-3.65-3.66zm15.67-6.26C17.61 4.88 15.3 4 13 4V.76L8.76 5 13 9.24V6c1.79 0 3.58.68 4.95 2.05 2.73 2.73 2.73 7.17 0 9.9C16.58 19.32 14.79 20 13 20c-.97 0-1.94-.21-2.84-.61l-1.49 1.49C10.02 21.62 11.51 22 13 22c2.3 0 4.61-.88 6.36-2.64 3.52-3.51 3.52-9.21 0-12.72z\"}}]})(props);\n};\nexport function MdRotateLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.11 8.53L5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47zM6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47zm1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03L7.1 18.32zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93z\"}}]})(props);\n};\nexport function MdRotateRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z\"}}]})(props);\n};\nexport function MdSlideshow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 8v8l5-4-5-4zm9-5H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"}}]})(props);\n};\nexport function MdStraighten (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H3V8h2v4h2V8h2v4h2V8h2v4h2V8h2v4h2V8h2v8z\"}}]})(props);\n};\nexport function MdStyle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2.53 19.65l1.34.56v-9.03l-2.43 5.86c-.41 1.02.08 2.19 1.09 2.61zm19.5-3.7L17.07 3.98c-.31-.75-1.04-1.21-1.81-1.23-.26 0-.53.04-.79.15L7.1 5.95c-.75.31-1.21 1.03-1.23 1.8-.01.27.04.54.15.8l4.96 11.97c.31.76 1.05 1.22 1.83 1.23.26 0 .52-.05.77-.15l7.36-3.05c1.02-.42 1.51-1.59 1.09-2.6zM7.88 8.75c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-2 11c0 1.1.9 2 2 2h1.45l-3.45-8.34v6.34z\"}}]})(props);\n};\nexport function MdSwitchCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4h-3.17L15 2H9L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 11.5V13H9v2.5L5.5 12 9 8.5V11h6V8.5l3.5 3.5-3.5 3.5z\"}}]})(props);\n};\nexport function MdSwitchVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 9.5V6c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3.5l4 4v-13l-4 4zm-5 6V13H7v2.5L3.5 12 7 8.5V11h6V8.5l3.5 3.5-3.5 3.5z\"}}]})(props);\n};\nexport function MdTagFaces (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"}}]})(props);\n};\nexport function MdTexture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.51 3.08L3.08 19.51c.09.34.27.65.51.9.25.24.56.42.9.51L20.93 4.49c-.19-.69-.73-1.23-1.42-1.41zM11.88 3L3 11.88v2.83L14.71 3h-2.83zM5 3c-1.1 0-2 .9-2 2v2l4-4H5zm14 18c.55 0 1.05-.22 1.41-.59.37-.36.59-.86.59-1.41v-2l-4 4h2zm-9.71 0h2.83L21 12.12V9.29L9.29 21z\"}}]})(props);\n};\nexport function MdTimelapse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.24 7.76C15.07 6.59 13.54 6 12 6v6l-4.24 4.24c2.34 2.34 6.14 2.34 8.49 0 2.34-2.34 2.34-6.14-.01-8.48zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdTimer10 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M0 7.72V9.4l3-1V18h2V6h-.25L0 7.72zm23.78 6.65c-.14-.28-.35-.53-.63-.74-.28-.21-.61-.39-1.01-.53s-.85-.27-1.35-.38c-.35-.07-.64-.15-.87-.23-.23-.08-.41-.16-.55-.25-.14-.09-.23-.19-.28-.3-.05-.11-.08-.24-.08-.39 0-.14.03-.28.09-.41.06-.13.15-.25.27-.34.12-.1.27-.18.45-.24s.4-.09.64-.09c.25 0 .47.04.66.11.19.07.35.17.48.29.13.12.22.26.29.42.06.16.1.32.1.49h1.95c0-.39-.08-.75-.24-1.09-.16-.34-.39-.63-.69-.88-.3-.25-.66-.44-1.09-.59C21.49 9.07 21 9 20.46 9c-.51 0-.98.07-1.39.21-.41.14-.77.33-1.06.57-.29.24-.51.52-.67.84-.16.32-.23.65-.23 1.01s.08.69.23.96c.15.28.36.52.64.73.27.21.6.38.98.53.38.14.81.26 1.27.36.39.08.71.17.95.26s.43.19.57.29c.13.1.22.22.27.34.05.12.07.25.07.39 0 .32-.13.57-.4.77-.27.2-.66.29-1.17.29-.22 0-.43-.02-.64-.08-.21-.05-.4-.13-.56-.24-.17-.11-.3-.26-.41-.44-.11-.18-.17-.41-.18-.67h-1.89c0 .36.08.71.24 1.05.16.34.39.65.7.93.31.27.69.49 1.15.66.46.17.98.25 1.58.25.53 0 1.01-.06 1.44-.19.43-.13.8-.31 1.11-.54.31-.23.54-.51.71-.83.17-.32.25-.67.25-1.06-.02-.4-.09-.74-.24-1.02zm-9.96-7.32c-.34-.4-.75-.7-1.23-.88-.47-.18-1.01-.27-1.59-.27-.58 0-1.11.09-1.59.27-.48.18-.89.47-1.23.88-.34.41-.6.93-.79 1.59-.18.65-.28 1.45-.28 2.39v1.92c0 .94.09 1.74.28 2.39.19.66.45 1.19.8 1.6.34.41.75.71 1.23.89.48.18 1.01.28 1.59.28.59 0 1.12-.09 1.59-.28.48-.18.88-.48 1.22-.89.34-.41.6-.94.78-1.6.18-.65.28-1.45.28-2.39v-1.92c0-.94-.09-1.74-.28-2.39-.18-.66-.44-1.19-.78-1.59zm-.92 6.17c0 .6-.04 1.11-.12 1.53-.08.42-.2.76-.36 1.02-.16.26-.36.45-.59.57-.23.12-.51.18-.82.18-.3 0-.58-.06-.82-.18s-.44-.31-.6-.57c-.16-.26-.29-.6-.38-1.02-.09-.42-.13-.93-.13-1.53v-2.5c0-.6.04-1.11.13-1.52.09-.41.21-.74.38-1 .16-.25.36-.43.6-.55.24-.11.51-.17.81-.17.31 0 .58.06.81.17.24.11.44.29.6.55.16.25.29.58.37.99.08.41.13.92.13 1.52v2.51z\"}}]})(props);\n};\nexport function MdTimer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.03-6.61l1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.07 4.74 14.12 4 12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.12-.74-4.07-1.97-5.61zM12 20c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdTimer3 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.61 12.97c-.16-.24-.36-.46-.62-.65-.25-.19-.56-.35-.93-.48.3-.14.57-.3.8-.5.23-.2.42-.41.57-.64.15-.23.27-.46.34-.71.08-.24.11-.49.11-.73 0-.55-.09-1.04-.28-1.46-.18-.42-.44-.77-.78-1.06-.33-.28-.73-.5-1.2-.64-.45-.13-.97-.2-1.53-.2-.55 0-1.06.08-1.52.24-.47.17-.87.4-1.2.69-.33.29-.6.63-.78 1.03-.2.39-.29.83-.29 1.29h1.98c0-.26.05-.49.14-.69.09-.2.22-.38.38-.52.17-.14.36-.25.58-.33.22-.08.46-.12.73-.12.61 0 1.06.16 1.36.47.3.31.44.75.44 1.32 0 .27-.04.52-.12.74-.08.22-.21.41-.38.57-.17.16-.38.28-.63.37-.25.09-.55.13-.89.13H6.72v1.57H7.9c.34 0 .64.04.91.11.27.08.5.19.69.35.19.16.34.36.44.61.1.24.16.54.16.87 0 .62-.18 1.09-.53 1.42-.35.33-.84.49-1.45.49-.29 0-.56-.04-.8-.13-.24-.08-.44-.2-.61-.36-.17-.16-.3-.34-.39-.56-.09-.22-.14-.46-.14-.72H4.19c0 .55.11 1.03.32 1.45.21.42.5.77.86 1.05s.77.49 1.24.63.96.21 1.48.21c.57 0 1.09-.08 1.58-.23.49-.15.91-.38 1.26-.68.36-.3.64-.66.84-1.1.2-.43.3-.93.3-1.48 0-.29-.04-.58-.11-.86-.08-.25-.19-.51-.35-.76zm9.26 1.4c-.14-.28-.35-.53-.63-.74-.28-.21-.61-.39-1.01-.53s-.85-.27-1.35-.38c-.35-.07-.64-.15-.87-.23-.23-.08-.41-.16-.55-.25-.14-.09-.23-.19-.28-.3-.05-.11-.08-.24-.08-.39s.03-.28.09-.41c.06-.13.15-.25.27-.34.12-.1.27-.18.45-.24s.4-.09.64-.09c.25 0 .47.04.66.11.19.07.35.17.48.29.13.12.22.26.29.42.06.16.1.32.1.49h1.95c0-.39-.08-.75-.24-1.09-.16-.34-.39-.63-.69-.88-.3-.25-.66-.44-1.09-.59-.43-.15-.92-.22-1.46-.22-.51 0-.98.07-1.39.21-.41.14-.77.33-1.06.57-.29.24-.51.52-.67.84-.16.32-.23.65-.23 1.01s.08.68.23.96c.15.28.37.52.64.73.27.21.6.38.98.53.38.14.81.26 1.27.36.39.08.71.17.95.26s.43.19.57.29c.13.1.22.22.27.34.05.12.07.25.07.39 0 .32-.13.57-.4.77-.27.2-.66.29-1.17.29-.22 0-.43-.02-.64-.08-.21-.05-.4-.13-.56-.24-.17-.11-.3-.26-.41-.44-.11-.18-.17-.41-.18-.67h-1.89c0 .36.08.71.24 1.05.16.34.39.65.7.93.31.27.69.49 1.15.66.46.17.98.25 1.58.25.53 0 1.01-.06 1.44-.19.43-.13.8-.31 1.11-.54.31-.23.54-.51.71-.83.17-.32.25-.67.25-1.06-.02-.4-.09-.74-.24-1.02z\"}}]})(props);\n};\nexport function MdTimerOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.04 4.55l-1.42 1.42C16.07 4.74 14.12 4 12 4c-1.83 0-3.53.55-4.95 1.48l1.46 1.46C9.53 6.35 10.73 6 12 6c3.87 0 7 3.13 7 7 0 1.27-.35 2.47-.94 3.49l1.45 1.45C20.45 16.53 21 14.83 21 13c0-2.12-.74-4.07-1.97-5.61l1.42-1.42-1.41-1.42zM15 1H9v2h6V1zm-4 8.44l2 2V8h-2v1.44zM3.02 4L1.75 5.27 4.5 8.03C3.55 9.45 3 11.16 3 13c0 4.97 4.02 9 9 9 1.84 0 3.55-.55 4.98-1.5l2.5 2.5 1.27-1.27-7.71-7.71L3.02 4zM12 20c-3.87 0-7-3.13-7-7 0-1.28.35-2.48.95-3.52l9.56 9.56c-1.03.61-2.23.96-3.51.96z\"}}]})(props);\n};\nexport function MdTonality (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93s3.05-7.44 7-7.93v15.86zm2-15.86c1.03.13 2 .45 2.87.93H13v-.93zM13 7h5.24c.25.31.48.65.68 1H13V7zm0 3h6.74c.08.33.15.66.19 1H13v-1zm0 9.93V19h2.87c-.87.48-1.84.8-2.87.93zM18.24 17H13v-1h5.92c-.2.35-.43.69-.68 1zm1.5-3H13v-1h6.93c-.04.34-.11.67-.19 1z\"}}]})(props);\n};\nexport function MdTransform (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 18v-2H8V4h2L7 1 4 4h2v2H2v2h4v8c0 1.1.9 2 2 2h8v2h-2l3 3 3-3h-2v-2h4zM10 8h6v6h2V8c0-1.1-.9-2-2-2h-6v2z\"}}]})(props);\n};\nexport function MdTune (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z\"}}]})(props);\n};\nexport function MdViewComfy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 9h4V5H3v4zm0 5h4v-4H3v4zm5 0h4v-4H8v4zm5 0h4v-4h-4v4zM8 9h4V5H8v4zm5-4v4h4V5h-4zm5 9h4v-4h-4v4zM3 19h4v-4H3v4zm5 0h4v-4H8v4zm5 0h4v-4h-4v4zm5 0h4v-4h-4v4zm0-14v4h4V5h-4z\"}}]})(props);\n};\nexport function MdViewCompact (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 19h6v-7H3v7zm7 0h12v-7H10v7zM3 5v6h19V5H3z\"}}]})(props);\n};\nexport function MdVignette (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 15c-4.42 0-8-2.69-8-6s3.58-6 8-6 8 2.69 8 6-3.58 6-8 6z\"}}]})(props);\n};\nexport function MdWbAuto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.85 12.65h2.3L8 9l-1.15 3.65zM22 7l-1.2 6.29L19.3 7h-1.6l-1.49 6.29L15 7h-.76C12.77 5.17 10.53 4 8 4c-4.42 0-8 3.58-8 8s3.58 8 8 8c3.13 0 5.84-1.81 7.15-4.43l.1.43H17l1.5-6.1L20 16h1.75l2.05-9H22zm-11.7 9l-.7-2H6.4l-.7 2H3.8L7 7h2l3.2 9h-1.9z\"}}]})(props);\n};\nexport function MdWbCloudy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.36 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.64-4.96z\"}}]})(props);\n};\nexport function MdWbIncandescent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3.55 18.54l1.41 1.41 1.79-1.8-1.41-1.41-1.79 1.8zM11 22.45h2V19.5h-2v2.95zM4 10.5H1v2h3v-2zm11-4.19V1.5H9v4.81C7.21 7.35 6 9.28 6 11.5c0 3.31 2.69 6 6 6s6-2.69 6-6c0-2.22-1.21-4.15-3-5.19zm5 4.19v2h3v-2h-3zm-2.76 7.66l1.79 1.8 1.41-1.41-1.8-1.79-1.4 1.4z\"}}]})(props);\n};\nexport function MdWbIridescent (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 14.5h14v-6H5v6zM11 .55V3.5h2V.55h-2zm8.04 2.5l-1.79 1.79 1.41 1.41 1.8-1.79-1.42-1.41zM13 22.45V19.5h-2v2.95h2zm7.45-3.91l-1.8-1.79-1.41 1.41 1.79 1.8 1.42-1.42zM3.55 4.46l1.79 1.79 1.41-1.41-1.79-1.79-1.41 1.41zm1.41 15.49l1.79-1.8-1.41-1.41-1.79 1.79 1.41 1.42z\"}}]})(props);\n};\nexport function MdWbSunny (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79 1.42-1.41zM4 10.5H1v2h3v-2zm9-9.95h-2V3.5h2V.55zm7.45 3.91l-1.41-1.41-1.79 1.79 1.41 1.41 1.79-1.79zm-3.21 13.7l1.79 1.8 1.41-1.41-1.8-1.79-1.4 1.4zM20 10.5v2h3v-2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm-1 16.95h2V19.5h-2v2.95zm-7.45-3.91l1.41 1.41 1.79-1.8-1.41-1.41-1.79 1.8z\"}}]})(props);\n};\nexport function MdAddLocation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.14 2 5 5.14 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.86-3.14-7-7-7zm4 8h-3v3h-2v-3H8V8h3V5h2v3h3v2z\"}}]})(props);\n};\nexport function MdBeenhere (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 1H5c-1.1 0-1.99.9-1.99 2L3 15.93c0 .69.35 1.3.88 1.66L12 23l8.11-5.41c.53-.36.88-.97.88-1.66L21 3c0-1.1-.9-2-2-2zm-9 15l-5-5 1.41-1.41L10 13.17l7.59-7.59L19 7l-9 9z\"}}]})(props);\n};\nexport function MdDirections (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.71 11.29l-9-9c-.39-.39-1.02-.39-1.41 0l-9 9c-.39.39-.39 1.02 0 1.41l9 9c.39.39 1.02.39 1.41 0l9-9c.39-.38.39-1.01 0-1.41zM14 14.5V12h-4v3H8v-4c0-.55.45-1 1-1h5V7.5l3.5 3.5-3.5 3.5z\"}}]})(props);\n};\nexport function MdDirectionsBike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM5 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5zm5.8-10l2.4-2.4.8.8c1.3 1.3 3 2.1 5.1 2.1V9c-1.5 0-2.7-.6-3.6-1.5l-1.9-1.9c-.5-.4-1-.6-1.6-.6s-1.1.2-1.4.6L7.8 8.4c-.4.4-.6.9-.6 1.4 0 .6.2 1.1.6 1.4L11 14v5h2v-6.2l-2.2-2.3zM19 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z\"}}]})(props);\n};\nexport function MdDirectionsBoat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 21c-1.39 0-2.78-.47-4-1.32-2.44 1.71-5.56 1.71-8 0C6.78 20.53 5.39 21 4 21H2v2h2c1.38 0 2.74-.35 4-.99 2.52 1.29 5.48 1.29 8 0 1.26.65 2.62.99 4 .99h2v-2h-2zM3.95 19H4c1.6 0 3.02-.88 4-2 .98 1.12 2.4 2 4 2s3.02-.88 4-2c.98 1.12 2.4 2 4 2h.05l1.89-6.68c.08-.26.06-.54-.06-.78s-.34-.42-.6-.5L20 10.62V6c0-1.1-.9-2-2-2h-3V1H9v3H6c-1.1 0-2 .9-2 2v4.62l-1.29.42c-.26.08-.48.26-.6.5s-.15.52-.06.78L3.95 19zM6 6h12v3.97L12 8 6 9.97V6z\"}}]})(props);\n};\nexport function MdDirectionsBus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 16c0 .88.39 1.67 1 2.22V20c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h8v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.78c.61-.55 1-1.34 1-2.22V6c0-3.5-3.58-4-8-4s-8 .5-8 4v10zm3.5 1c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm9 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm1.5-6H6V6h12v5z\"}}]})(props);\n};\nexport function MdDirectionsCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z\"}}]})(props);\n};\nexport function MdDirectionsRailway (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 15.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h12v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V5c0-3.5-3.58-4-8-4s-8 .5-8 4v10.5zm8 1.5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-7H6V5h12v5z\"}}]})(props);\n};\nexport function MdDirectionsRun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.49 5.48c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-3.6 13.9l1-4.4 2.1 2v6h2v-7.5l-2.1-2 .6-3c1.3 1.5 3.3 2.5 5.5 2.5v-2c-1.9 0-3.5-1-4.3-2.4l-1-1.6c-.4-.6-1-1-1.7-1-.3 0-.5.1-.8.1l-5.2 2.2v4.7h2v-3.4l1.8-.7-1.6 8.1-4.9-1-.4 2 7 1.4z\"}}]})(props);\n};\nexport function MdDirectionsSubway (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4.42 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h12v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-3.58-4-8-4zM7.5 17c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm3.5-6H6V6h5v5zm5.5 6c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm1.5-6h-5V6h5v5z\"}}]})(props);\n};\nexport function MdDirectionsTransit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4.42 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h12v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-3.58-4-8-4zM7.5 17c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm3.5-6H6V6h5v5zm5.5 6c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm1.5-6h-5V6h5v5z\"}}]})(props);\n};\nexport function MdDirectionsWalk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM9.8 8.9L7 23h2.1l1.8-8 2.1 2v6h2v-7.5l-2.1-2 .6-3C14.8 12 16.8 13 19 13v-2c-1.9 0-3.5-1-4.3-2.4l-1-1.6c-.4-.6-1-1-1.7-1-.3 0-.5.1-.8.1L6 8.3V13h2V9.6l1.8-.7\"}}]})(props);\n};\nexport function MdEditLocation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.14 2 5 5.14 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.86-3.14-7-7-7zm-1.56 10H9v-1.44l3.35-3.34 1.43 1.43L10.44 12zm4.45-4.45l-.7.7-1.44-1.44.7-.7c.15-.15.39-.15.54 0l.9.9c.15.15.15.39 0 .54z\"}}]})(props);\n};\nexport function MdEvStation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.77 7.23l.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77zM18 10c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM8 18v-4.5H6L10 6v5h2l-4 7z\"}}]})(props);\n};\nexport function MdFlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.18 9\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"}}]})(props);\n};\nexport function MdHotel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 13c1.66 0 3-1.34 3-3S8.66 7 7 7s-3 1.34-3 3 1.34 3 3 3zm12-6h-8v7H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdLayers (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 18.54l-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27-7.38 5.74zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27L12 16z\"}}]})(props);\n};\nexport function MdLayersClear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.81 14.99l1.19-.92-1.43-1.43-1.19.92 1.43 1.43zm-.45-4.72L21 9l-9-7-2.91 2.27 7.87 7.88 2.4-1.88zM3.27 1L2 2.27l4.22 4.22L3 9l1.63 1.27L12 16l2.1-1.63 1.43 1.43L12 18.54l-7.37-5.73L3 14.07l9 7 4.95-3.85L20.73 21 22 19.73 3.27 1z\"}}]})(props);\n};\nexport function MdLocalActivity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12c0-1.1.9-2 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-1.99.9-1.99 2v4c1.1 0 1.99.9 1.99 2s-.89 2-2 2v4c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-4c-1.1 0-2-.9-2-2zm-4.42 4.8L12 14.5l-3.58 2.3 1.08-4.12-3.29-2.69 4.24-.25L12 5.8l1.54 3.95 4.24.25-3.29 2.69 1.09 4.11z\"}}]})(props);\n};\nexport function MdLocalAirport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"}}]})(props);\n};\nexport function MdLocalAtm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 17h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4V8h-2V7h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1zm9-13H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12z\"}}]})(props);\n};\nexport function MdLocalBar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5V3H3v2l8 9v5H6v2h12v-2h-5v-5l8-9zM7.43 7L5.66 5h12.69l-1.78 2H7.43z\"}}]})(props);\n};\nexport function MdLocalCafe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4v10c0 2.21 1.79 4 4 4h6c2.21 0 4-1.79 4-4v-3h2c1.11 0 2-.89 2-2V5c0-1.11-.89-2-2-2zm0 5h-2V5h2v3zM2 21h18v-2H2v2z\"}}]})(props);\n};\nexport function MdLocalCarWash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5c.83 0 1.5-.67 1.5-1.5 0-1-1.5-2.7-1.5-2.7s-1.5 1.7-1.5 2.7c0 .83.67 1.5 1.5 1.5zm-5 0c.83 0 1.5-.67 1.5-1.5 0-1-1.5-2.7-1.5-2.7s-1.5 1.7-1.5 2.7c0 .83.67 1.5 1.5 1.5zM7 5c.83 0 1.5-.67 1.5-1.5C8.5 2.5 7 .8 7 .8S5.5 2.5 5.5 3.5C5.5 4.33 6.17 5 7 5zm11.92 3.01C18.72 7.42 18.16 7 17.5 7h-11c-.66 0-1.21.42-1.42 1.01L3 14v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 18c-.83 0-1.5-.67-1.5-1.5S5.67 15 6.5 15s1.5.67 1.5 1.5S7.33 18 6.5 18zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 13l1.5-4.5h11L19 13H5z\"}}]})(props);\n};\nexport function MdLocalConvenienceStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 7V4H5v3H2v13h8v-4h4v4h8V7h-3zm-8 3H9v1h2v1H8V9h2V8H8V7h3v3zm5 2h-1v-2h-2V7h1v2h1V7h1v5z\"}}]})(props);\n};\nexport function MdLocalDining (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.1 13.34l2.83-2.83L3.91 3.5c-1.56 1.56-1.56 4.09 0 5.66l4.19 4.18zm6.78-1.81c1.53.71 3.68.21 5.27-1.38 1.91-1.91 2.28-4.65.81-6.12-1.46-1.46-4.2-1.1-6.12.81-1.59 1.59-2.09 3.74-1.38 5.27L3.7 19.87l1.41 1.41L12 14.41l6.88 6.88 1.41-1.41L13.41 13l1.47-1.47z\"}}]})(props);\n};\nexport function MdLocalDrink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 2l2.01 18.23C5.13 21.23 5.97 22 7 22h10c1.03 0 1.87-.77 1.99-1.77L21 2H3zm9 17c-1.66 0-3-1.34-3-3 0-2 3-5.4 3-5.4s3 3.4 3 5.4c0 1.66-1.34 3-3 3zm6.33-11H5.67l-.44-4h13.53l-.43 4z\"}}]})(props);\n};\nexport function MdLocalFlorist (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c4.97 0 9-4.03 9-9-4.97 0-9 4.03-9 9zM5.6 10.25c0 1.38 1.12 2.5 2.5 2.5.53 0 1.01-.16 1.42-.44l-.02.19c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5l-.02-.19c.4.28.89.44 1.42.44 1.38 0 2.5-1.12 2.5-2.5 0-1-.59-1.85-1.43-2.25.84-.4 1.43-1.25 1.43-2.25 0-1.38-1.12-2.5-2.5-2.5-.53 0-1.01.16-1.42.44l.02-.19C14.5 2.12 13.38 1 12 1S9.5 2.12 9.5 3.5l.02.19c-.4-.28-.89-.44-1.42-.44-1.38 0-2.5 1.12-2.5 2.5 0 1 .59 1.85 1.43 2.25-.84.4-1.43 1.25-1.43 2.25zM12 5.5c1.38 0 2.5 1.12 2.5 2.5s-1.12 2.5-2.5 2.5S9.5 9.38 9.5 8s1.12-2.5 2.5-2.5zM3 13c0 4.97 4.03 9 9 9 0-4.97-4.03-9-9-9z\"}}]})(props);\n};\nexport function MdLocalGasStation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.77 7.23l.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77zM12 10H6V5h6v5zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"}}]})(props);\n};\nexport function MdLocalGroceryStore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdLocalHospital (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z\"}}]})(props);\n};\nexport function MdLocalHotel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 13c1.66 0 3-1.34 3-3S8.66 7 7 7s-3 1.34-3 3 1.34 3 3 3zm12-6h-8v7H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdLocalLaundryService (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.17 16.83c1.56 1.56 4.1 1.56 5.66 0 1.56-1.56 1.56-4.1 0-5.66l-5.66 5.66zM18 2.01L6 2c-1.11 0-2 .89-2 2v16c0 1.11.89 2 2 2h12c1.11 0 2-.89 2-2V4c0-1.11-.89-1.99-2-1.99zM10 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM7 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm5 16c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\"}}]})(props);\n};\nexport function MdLocalLibrary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 11.55C9.64 9.35 6.48 8 3 8v11c3.48 0 6.64 1.35 9 3.55 2.36-2.19 5.52-3.55 9-3.55V8c-3.48 0-6.64 1.35-9 3.55zM12 8c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z\"}}]})(props);\n};\nexport function MdLocalMall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6h-2c0-2.76-2.24-5-5-5S7 3.24 7 6H5c-1.1 0-1.99.9-1.99 2L3 20c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-7-3c1.66 0 3 1.34 3 3H9c0-1.66 1.34-3 3-3zm0 10c-2.76 0-5-2.24-5-5h2c0 1.66 1.34 3 3 3s3-1.34 3-3h2c0 2.76-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdLocalMovies (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"}}]})(props);\n};\nexport function MdLocalOffer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z\"}}]})(props);\n};\nexport function MdLocalParking (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 3H6v18h4v-6h3c3.31 0 6-2.69 6-6s-2.69-6-6-6zm.2 8H10V7h3.2c1.1 0 2 .9 2 2s-.9 2-2 2z\"}}]})(props);\n};\nexport function MdLocalPharmacy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 5h-2.64l1.14-3.14L17.15 1l-1.46 4H3v2l2 6-2 6v2h18v-2l-2-6 2-6V5zm-5 9h-3v3h-2v-3H8v-2h3V9h2v3h3v2z\"}}]})(props);\n};\nexport function MdLocalPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"}}]})(props);\n};\nexport function MdLocalPizza (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.43 2 5.23 3.54 3.01 6L12 22l8.99-16C18.78 3.55 15.57 2 12 2zM7 7c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zm5 8c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdLocalPlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12c0-1.1.9-2 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-1.99.9-1.99 2v4c1.1 0 1.99.9 1.99 2s-.89 2-2 2v4c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-4c-1.1 0-2-.9-2-2zm-4.42 4.8L12 14.5l-3.58 2.3 1.08-4.12-3.29-2.69 4.24-.25L12 5.8l1.54 3.95 4.24.25-3.29 2.69 1.09 4.11z\"}}]})(props);\n};\nexport function MdLocalPostOffice (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"}}]})(props);\n};\nexport function MdLocalPrintshop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z\"}}]})(props);\n};\nexport function MdLocalSee (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"3.2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdLocalShipping (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdLocalTaxi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5H15V3H9v2H6.5c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z\"}}]})(props);\n};\nexport function MdMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.5 3l-.16.03L15 5.1 9 3 3.36 4.9c-.21.07-.36.25-.36.48V20.5c0 .28.22.5.5.5l.16-.03L9 18.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V3.5c0-.28-.22-.5-.5-.5zM15 19l-6-2.11V5l6 2.11V19z\"}}]})(props);\n};\nexport function MdMyLocation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"}}]})(props);\n};\nexport function MdNavigation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71z\"}}]})(props);\n};\nexport function MdNearMe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3L3 10.53v.98l6.84 2.65L12.48 21h.98L21 3z\"}}]})(props);\n};\nexport function MdPersonPin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h4l3 3 3-3h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 3.3c1.49 0 2.7 1.21 2.7 2.7 0 1.49-1.21 2.7-2.7 2.7-1.49 0-2.7-1.21-2.7-2.7 0-1.49 1.21-2.7 2.7-2.7zM18 16H6v-.9c0-2 4-3.1 6-3.1s6 1.1 6 3.1v.9z\"}}]})(props);\n};\nexport function MdPersonPinCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.14 2 5 5.14 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.86-3.14-7-7-7zm0 2c1.1 0 2 .9 2 2 0 1.11-.9 2-2 2s-2-.89-2-2c0-1.1.9-2 2-2zm0 10c-1.67 0-3.14-.85-4-2.15.02-1.32 2.67-2.05 4-2.05s3.98.73 4 2.05c-.86 1.3-2.33 2.15-4 2.15z\"}}]})(props);\n};\nexport function MdPinDrop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8c0-3.31-2.69-6-6-6S6 4.69 6 8c0 4.5 6 11 6 11s6-6.5 6-11zm-8 0c0-1.1.9-2 2-2s2 .9 2 2-.89 2-2 2c-1.1 0-2-.9-2-2zM5 20v2h14v-2H5z\"}}]})(props);\n};\nexport function MdPlace (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"}}]})(props);\n};\nexport function MdRateReview (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 14v-2.47l6.88-6.88c.2-.2.51-.2.71 0l1.77 1.77c.2.2.2.51 0 .71L8.47 14H6zm12 0h-7.5l2-2H18v2z\"}}]})(props);\n};\nexport function MdRestaurant (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9H9V2H7v7H5V2H3v7c0 2.12 1.66 3.84 3.75 3.97V22h2.5v-9.03C11.34 12.84 13 11.12 13 9V2h-2v7zm5-3v8h2.5v8H21V2c-2.76 0-5 2.24-5 4z\"}}]})(props);\n};\nexport function MdRestaurantMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.1 13.34l2.83-2.83L3.91 3.5c-1.56 1.56-1.56 4.09 0 5.66l4.19 4.18zm6.78-1.81c1.53.71 3.68.21 5.27-1.38 1.91-1.91 2.28-4.65.81-6.12-1.46-1.46-4.2-1.1-6.12.81-1.59 1.59-2.09 3.74-1.38 5.27L3.7 19.87l1.41 1.41L12 14.41l6.88 6.88 1.41-1.41L13.41 13l1.47-1.47z\"}}]})(props);\n};\nexport function MdSatellite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.99h3C8 6.65 6.66 8 5 8V4.99zM5 12v-2c2.76 0 5-2.25 5-5.01h2C12 8.86 8.87 12 5 12zm0 6l3.5-4.5 2.5 3.01L14.5 12l4.5 6H5z\"}}]})(props);\n};\nexport function MdStoreMallDirectory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zm-9 4H6v-4h6v4z\"}}]})(props);\n};\nexport function MdStreetview (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.56 14.33c-.34.27-.56.7-.56 1.17V21h7c1.1 0 2-.9 2-2v-5.98c-.94-.33-1.95-.52-3-.52-2.03 0-3.93.7-5.44 1.83z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.5 6c0-1.08.27-2.1.74-3H5c-1.1 0-2 .9-2 2v14c0 .55.23 1.05.59 1.41l9.82-9.82C12.23 9.42 11.5 7.8 11.5 6z\"}}]})(props);\n};\nexport function MdSubway (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"16\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"16\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.01 9h10v5h-10zM17.8 2.8C16 2.09 13.86 2 12 2c-1.86 0-4 .09-5.8.8C3.53 3.84 2 6.05 2 8.86V22h20V8.86c0-2.81-1.53-5.02-4.2-6.06zm.2 13.08c0 1.45-1.18 2.62-2.63 2.62l1.13 1.12V20H15l-1.5-1.5h-2.83L9.17 20H7.5v-.38l1.12-1.12C7.18 18.5 6 17.32 6 15.88V9c0-2.63 3-3 6-3 3.32 0 6 .38 6 3v6.88z\"}}]})(props);\n};\nexport function MdTerrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14 6l-3.75 5 2.85 3.8-1.6 1.2C9.81 13.75 7 10 7 10l-6 8h22L14 6z\"}}]})(props);\n};\nexport function MdTraffic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 10h-3V8.86c1.72-.45 3-2 3-3.86h-3V4c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v1H4c0 1.86 1.28 3.41 3 3.86V10H4c0 1.86 1.28 3.41 3 3.86V15H4c0 1.86 1.28 3.41 3 3.86V20c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-1.14c1.72-.45 3-2 3-3.86h-3v-1.14c1.72-.45 3-2 3-3.86zm-8 9c-1.11 0-2-.9-2-2s.89-2 2-2c1.1 0 2 .9 2 2s-.89 2-2 2zm0-5c-1.11 0-2-.9-2-2s.89-2 2-2c1.1 0 2 .9 2 2s-.89 2-2 2zm0-5c-1.11 0-2-.9-2-2 0-1.11.89-2 2-2 1.1 0 2 .89 2 2 0 1.1-.89 2-2 2z\"}}]})(props);\n};\nexport function MdTrain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2c-4 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h2.23l2-2H14l2 2h2v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-3.58-4-8-4zM7.5 17c-.83 0-1.5-.67-1.5-1.5S6.67 14 7.5 14s1.5.67 1.5 1.5S8.33 17 7.5 17zm3.5-7H6V6h5v4zm2 0V6h5v4h-5zm3.5 7c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdTram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 16.94V8.5c0-2.79-2.61-3.4-6.01-3.49l.76-1.51H17V2H7v1.5h4.75l-.76 1.52C7.86 5.11 5 5.73 5 8.5v8.44c0 1.45 1.19 2.66 2.59 2.97L6 21.5v.5h2.23l2-2H14l2 2h2v-.5L16.5 20h-.08c1.69 0 2.58-1.37 2.58-3.06zm-7 1.56c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm5-4.5H7V9h10v5z\"}}]})(props);\n};\nexport function MdTransferWithinAStation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.49 15.5v-1.75L14 16.25l2.49 2.5V17H22v-1.5zm3.02 4.25H14v1.5h5.51V23L22 20.5 19.51 18zM9.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM5.75 8.9L3 23h2.1l1.75-8L9 17v6h2v-7.55L8.95 13.4l.6-3C10.85 12 12.8 13 15 13v-2c-1.85 0-3.45-1-4.35-2.45l-.95-1.6C9.35 6.35 8.7 6 8 6c-.25 0-.5.05-.75.15L2 8.3V13h2V9.65l1.75-.75\"}}]})(props);\n};\nexport function MdZoomOutMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 3l2.3 2.3-2.89 2.87 1.42 1.42L18.7 6.7 21 9V3zM3 9l2.3-2.3 2.87 2.89 1.42-1.42L6.7 5.3 9 3H3zm6 12l-2.3-2.3 2.89-2.87-1.42-1.42L5.3 17.3 3 15v6zm12-6l-2.3 2.3-2.87-2.89-1.42 1.42 2.89 2.87L15 21h6z\"}}]})(props);\n};\nexport function MdApps (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\"}}]})(props);\n};\nexport function MdArrowBack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\"}}]})(props);\n};\nexport function MdArrowDownward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"}}]})(props);\n};\nexport function MdArrowDropDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 10l5 5 5-5z\"}}]})(props);\n};\nexport function MdArrowDropDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 12l-4-4h8l-4 4z\"}}]})(props);\n};\nexport function MdArrowDropUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14l5-5 5 5z\"}}]})(props);\n};\nexport function MdArrowForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"}}]})(props);\n};\nexport function MdArrowUpward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"}}]})(props);\n};\nexport function MdCancel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"}}]})(props);\n};\nexport function MdCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"}}]})(props);\n};\nexport function MdChevronLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"}}]})(props);\n};\nexport function MdChevronRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"}}]})(props);\n};\nexport function MdClose (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"}}]})(props);\n};\nexport function MdExpandLess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"}}]})(props);\n};\nexport function MdExpandMore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"}}]})(props);\n};\nexport function MdFirstPage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"}}]})(props);\n};\nexport function MdFullscreen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"}}]})(props);\n};\nexport function MdFullscreenExit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"}}]})(props);\n};\nexport function MdLastPage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"}}]})(props);\n};\nexport function MdMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"}}]})(props);\n};\nexport function MdMoreHoriz (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdMoreVert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"}}]})(props);\n};\nexport function MdRefresh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"}}]})(props);\n};\nexport function MdSubdirectoryArrowLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11 9l1.42 1.42L8.83 14H18V4h2v12H8.83l3.59 3.58L11 21l-6-6 6-6z\"}}]})(props);\n};\nexport function MdSubdirectoryArrowRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 15l-6 6-1.42-1.42L15.17 16H4V4h2v10h9.17l-3.59-3.58L13 9l6 6z\"}}]})(props);\n};\nexport function MdUnfoldLess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\"}}]})(props);\n};\nexport function MdUnfoldMore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z\"}}]})(props);\n};\nexport function MdAdb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 16c0 3.87 3.13 7 7 7s7-3.13 7-7v-4H5v4zM16.12 4.37l2.1-2.1-.82-.83-2.3 2.31C14.16 3.28 13.12 3 12 3s-2.16.28-3.09.75L6.6 1.44l-.82.83 2.1 2.1C6.14 5.64 5 7.68 5 10v1h14v-1c0-2.32-1.14-4.36-2.88-5.63zM9 9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"}}]})(props);\n};\nexport function MdAirlineSeatFlat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 11v2H9V7h9c2.21 0 4 1.79 4 4zM2 14v2h6v2h8v-2h6v-2H2zm5.14-1.9c1.16-1.19 1.14-3.08-.04-4.24-1.19-1.16-3.08-1.14-4.24.04-1.16 1.19-1.14 3.08.04 4.24 1.19 1.16 3.08 1.14 4.24-.04z\"}}]})(props);\n};\nexport function MdAirlineSeatFlatAngled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.25 14.29l-.69 1.89L9.2 11.71l2.08-5.66 8.56 3.09c2.1.76 3.18 3.06 2.41 5.15zM1.5 12.14L8 14.48V19h8v-1.63L20.52 19l.69-1.89-19.02-6.86-.69 1.89zm5.8-1.94c1.49-.72 2.12-2.51 1.41-4C7.99 4.71 6.2 4.08 4.7 4.8c-1.49.71-2.12 2.5-1.4 4 .71 1.49 2.5 2.12 4 1.4z\"}}]})(props);\n};\nexport function MdAirlineSeatIndividualSuite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7 13c1.65 0 3-1.35 3-3S8.65 7 7 7s-3 1.35-3 3 1.35 3 3 3zm12-6h-8v7H3V7H1v10h22v-6c0-2.21-1.79-4-4-4z\"}}]})(props);\n};\nexport function MdAirlineSeatLegroomExtra (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 12V3H2v9c0 2.76 2.24 5 5 5h6v-2H7c-1.66 0-3-1.34-3-3zm18.83 5.24c-.38-.72-1.29-.97-2.03-.63l-1.09.5-3.41-6.98c-.34-.68-1.03-1.12-1.79-1.12L11 9V3H5v8c0 1.66 1.34 3 3 3h7l3.41 7 3.72-1.7c.77-.36 1.1-1.3.7-2.06z\"}}]})(props);\n};\nexport function MdAirlineSeatLegroomNormal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12V3H3v9c0 2.76 2.24 5 5 5h6v-2H8c-1.66 0-3-1.34-3-3zm15.5 6H19v-7c0-1.1-.9-2-2-2h-5V3H6v8c0 1.65 1.35 3 3 3h7v7h4.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5z\"}}]})(props);\n};\nexport function MdAirlineSeatLegroomReduced (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.97 19.2c.18.96-.55 1.8-1.47 1.8H14v-3l1-4H9c-1.65 0-3-1.35-3-3V3h6v6h5c1.1 0 2 .9 2 2l-2 7h1.44c.73 0 1.39.49 1.53 1.2zM5 12V3H3v9c0 2.76 2.24 5 5 5h4v-2H8c-1.66 0-3-1.34-3-3z\"}}]})(props);\n};\nexport function MdAirlineSeatReclineExtra (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.35 5.64c-.9-.64-1.12-1.88-.49-2.79.63-.9 1.88-1.12 2.79-.49.9.64 1.12 1.88.49 2.79-.64.9-1.88 1.12-2.79.49zM16 19H8.93c-1.48 0-2.74-1.08-2.96-2.54L4 7H2l1.99 9.76C4.37 19.2 6.47 21 8.94 21H16v-2zm.23-4h-4.88l-1.03-4.1c1.58.89 3.28 1.54 5.15 1.22V9.99c-1.63.31-3.44-.27-4.69-1.25L9.14 7.47c-.23-.18-.49-.3-.76-.38-.32-.09-.66-.12-.99-.06h-.02c-1.23.22-2.05 1.39-1.84 2.61l1.35 5.92C7.16 16.98 8.39 18 9.83 18h6.85l3.82 3 1.5-1.5-5.77-4.5z\"}}]})(props);\n};\nexport function MdAirlineSeatReclineNormal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.59 5.41c-.78-.78-.78-2.05 0-2.83.78-.78 2.05-.78 2.83 0 .78.78.78 2.05 0 2.83-.79.79-2.05.79-2.83 0zM6 16V7H4v9c0 2.76 2.24 5 5 5h6v-2H9c-1.66 0-3-1.34-3-3zm14 4.07L14.93 15H11.5v-3.68c1.4 1.15 3.6 2.16 5.5 2.16v-2.16c-1.66.02-3.61-.87-4.67-2.04l-1.4-1.55c-.19-.21-.43-.38-.69-.5-.29-.14-.62-.23-.96-.23h-.03C8.01 7 7 8.01 7 9.25V15c0 1.66 1.34 3 3 3h5.07l3.5 3.5L20 20.07z\"}}]})(props);\n};\nexport function MdBluetoothAudio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.24 12.01l2.32 2.32c.28-.72.44-1.51.44-2.33 0-.82-.16-1.59-.43-2.31l-2.33 2.32zm5.29-5.3l-1.26 1.26c.63 1.21.98 2.57.98 4.02s-.36 2.82-.98 4.02l1.2 1.2c.97-1.54 1.54-3.36 1.54-5.31-.01-1.89-.55-3.67-1.48-5.19zm-3.82 1L10 2H9v7.59L4.41 5 3 6.41 8.59 12 3 17.59 4.41 19 9 14.41V22h1l5.71-5.71-4.3-4.29 4.3-4.29zM11 5.83l1.88 1.88L11 9.59V5.83zm1.88 10.46L11 18.17v-3.76l1.88 1.88z\"}}]})(props);\n};\nexport function MdConfirmationNumber (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 10V6c0-1.11-.9-2-2-2H4c-1.1 0-1.99.89-1.99 2v4c1.1 0 1.99.9 1.99 2s-.89 2-2 2v4c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-4c-1.1 0-2-.9-2-2s.9-2 2-2zm-9 7.5h-2v-2h2v2zm0-4.5h-2v-2h2v2zm0-4.5h-2v-2h2v2z\"}}]})(props);\n};\nexport function MdDiscFull (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 16h2v-2h-2v2zm0-9v5h2V7h-2zM10 4c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"}}]})(props);\n};\nexport function MdDoNotDisturb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z\"}}]})(props);\n};\nexport function MdDoNotDisturbAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zM4 12c0-4.4 3.6-8 8-8 1.8 0 3.5.6 4.9 1.7L5.7 16.9C4.6 15.5 4 13.8 4 12zm8 8c-1.8 0-3.5-.6-4.9-1.7L18.3 7.1C19.4 8.5 20 10.2 20 12c0 4.4-3.6 8-8 8z\"}}]})(props);\n};\nexport function MdDoNotDisturbOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 11v2h-1.46l4.68 4.68C21.34 16.07 22 14.11 22 12c0-5.52-4.48-10-10-10-2.11 0-4.07.66-5.68 1.78L13.54 11H17zM2.27 2.27L1 3.54l2.78 2.78C2.66 7.93 2 9.89 2 12c0 5.52 4.48 10 10 10 2.11 0 4.07-.66 5.68-1.78L20.46 23l1.27-1.27L11 11 2.27 2.27zM7 13v-2h1.46l2 2H7z\"}}]})(props);\n};\nexport function MdDoNotDisturbOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z\"}}]})(props);\n};\nexport function MdDriveEta (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.92 5.01C18.72 4.42 18.16 4 17.5 4h-11c-.66 0-1.21.42-1.42 1.01L3 11v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 15c-.83 0-1.5-.67-1.5-1.5S5.67 12 6.5 12s1.5.67 1.5 1.5S7.33 15 6.5 15zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 10l1.5-4.5h11L19 10H5z\"}}]})(props);\n};\nexport function MdEnhancedEncryption (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6zM16 16h-3v3h-2v-3H8v-2h3v-3h2v3h3v2z\"}}]})(props);\n};\nexport function MdEventAvailable (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.53 11.06L15.47 10l-4.88 4.88-2.12-2.12-1.06 1.06L10.59 17l5.94-5.94zM19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11z\"}}]})(props);\n};\nexport function MdEventBusy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9.31 17l2.44-2.44L14.19 17l1.06-1.06-2.44-2.44 2.44-2.44L14.19 10l-2.44 2.44L9.31 10l-1.06 1.06 2.44 2.44-2.44 2.44L9.31 17zM19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11z\"}}]})(props);\n};\nexport function MdEventNote (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 10H7v2h10v-2zm2-7h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zm-5-5H7v2h7v-2z\"}}]})(props);\n};\nexport function MdFolderSpecial (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-2.06 11L15 15.28 12.06 17l.78-3.33-2.59-2.24 3.41-.29L15 8l1.34 3.14 3.41.29-2.59 2.24.78 3.33z\"}}]})(props);\n};\nexport function MdLiveTv (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 6h-7.59l3.29-3.29L16 2l-4 4-4-4-.71.71L10.59 6H3c-1.1 0-2 .89-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.11-.9-2-2-2zm0 14H3V8h18v12zM9 10v8l7-4z\"}}]})(props);\n};\nexport function MdMms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM5 14l3.5-4.5 2.5 3.01L14.5 8l4.5 6H5z\"}}]})(props);\n};\nexport function MdMore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.97.89 1.66.89H22c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 13.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm5 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm5 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"}}]})(props);\n};\nexport function MdNetworkCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.9 5c-.17 0-.32.09-.41.23l-.07.15-5.18 11.65c-.16.29-.26.61-.26.96 0 1.11.9 2.01 2.01 2.01.96 0 1.77-.68 1.96-1.59l.01-.03L16.4 5.5c0-.28-.22-.5-.5-.5zM1 9l2 2c2.88-2.88 6.79-4.08 10.53-3.62l1.19-2.68C9.89 3.84 4.74 5.27 1 9zm20 2l2-2c-1.64-1.64-3.55-2.82-5.59-3.57l-.53 2.82c1.5.62 2.9 1.53 4.12 2.75zm-4 4l2-2c-.8-.8-1.7-1.42-2.66-1.89l-.55 2.92c.42.27.83.59 1.21.97zM5 13l2 2c1.13-1.13 2.56-1.79 4.03-2l1.28-2.88c-2.63-.08-5.3.87-7.31 2.88z\"}}]})(props);\n};\nexport function MdNetworkLocked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.5 10c.17 0 .33.03.5.05V1L1 20h13v-3c0-.89.39-1.68 1-2.23v-.27c0-2.48 2.02-4.5 4.5-4.5zm2.5 6v-1.5c0-1.38-1.12-2.5-2.5-2.5S17 13.12 17 14.5V16c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm-1 0h-3v-1.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V16z\"}}]})(props);\n};\nexport function MdNoEncryption (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 21.78L4.22 5 3 6.22l2.04 2.04C4.42 8.6 4 9.25 4 10v10c0 1.1.9 2 2 2h12c.23 0 .45-.05.66-.12L19.78 23 21 21.78zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H9.66L20 18.34V10c0-1.1-.9-2-2-2h-1V6c0-2.76-2.24-5-5-5-2.56 0-4.64 1.93-4.94 4.4L8.9 7.24V6z\"}}]})(props);\n};\nexport function MdOndemandVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z\"}}]})(props);\n};\nexport function MdPersonalVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12z\"}}]})(props);\n};\nexport function MdPhoneBluetoothSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M14.71 9.5L17 7.21V11h.5l2.85-2.85L18.21 6l2.15-2.15L17.5 1H17v3.79L14.71 2.5l-.71.71L16.79 6 14 8.79l.71.71zM18 2.91l.94.94-.94.94V2.91zm0 4.3l.94.94-.94.94V7.21zm2 8.29c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdPhoneForwarded (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 11l5-5-5-5v3h-4v4h4v3zm2 4.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z\"}}]})(props);\n};\nexport function MdPhoneInTalk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM19 12h2c0-4.97-4.03-9-9-9v2c3.87 0 7 3.13 7 7zm-4 0h2c0-2.76-2.24-5-5-5v2c1.66 0 3 1.34 3 3z\"}}]})(props);\n};\nexport function MdPhoneLocked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM20 4v-.5C20 2.12 18.88 1 17.5 1S15 2.12 15 3.5V4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-.8 0h-3.4v-.5c0-.94.76-1.7 1.7-1.7s1.7.76 1.7 1.7V4z\"}}]})(props);\n};\nexport function MdPhoneMissed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.5 5.5L12 11l7-7-1-1-6 6-4.5-4.5H11V3H5v6h1.5V5.5zm17.21 11.17C20.66 13.78 16.54 12 12 12 7.46 12 3.34 13.78.29 16.67c-.18.18-.29.43-.29.71s.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73 1.6 0 3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.67 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71s-.12-.52-.3-.7z\"}}]})(props);\n};\nexport function MdPhonePaused (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 3h-2v7h2V3zm3 12.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM19 3v7h2V3h-2z\"}}]})(props);\n};\nexport function MdPower (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.01 7L16 3h-2v4h-4V3H8v4h-.01C7 6.99 6 7.99 6 8.99v5.49L9.5 18v3h5v-3l3.5-3.51v-5.5c0-1-1-2-1.99-1.99z\"}}]})(props);\n};\nexport function MdPriorityHigh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10 3h4v12h-4z\"}}]})(props);\n};\nexport function MdRvHookup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 17v-6c0-1.1-.9-2-2-2H7V7l-3 3 3 3v-2h4v3H4v3c0 1.1.9 2 2 2h2c0 1.66 1.34 3 3 3s3-1.34 3-3h8v-2h-2zm-9 3c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm7-6h-4v-3h4v3zM17 2v2H9v2h8v2l3-3z\"}}]})(props);\n};\nexport function MdSdCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2h-8L4.02 8 4 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-6 6h-2V4h2v4zm3 0h-2V4h2v4zm3 0h-2V4h2v4z\"}}]})(props);\n};\nexport function MdSimCardAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2h-8L4.02 8 4 20c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-5 15h-2v-2h2v2zm0-4h-2V8h2v5z\"}}]})(props);\n};\nexport function MdSms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 11H7V9h2v2zm4 0h-2V9h2v2zm4 0h-2V9h2v2z\"}}]})(props);\n};\nexport function MdSmsFailed (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 12h-2v-2h2v2zm0-4h-2V6h2v4z\"}}]})(props);\n};\nexport function MdSync (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"}}]})(props);\n};\nexport function MdSyncDisabled (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 6.35V4.26c-.8.21-1.55.54-2.23.96l1.46 1.46c.25-.12.5-.24.77-.33zm-7.14-.94l2.36 2.36C4.45 8.99 4 10.44 4 12c0 2.21.91 4.2 2.36 5.64L4 20h6v-6l-2.24 2.24C6.68 15.15 6 13.66 6 12c0-1 .25-1.94.68-2.77l8.08 8.08c-.25.13-.5.25-.77.34v2.09c.8-.21 1.55-.54 2.23-.96l2.36 2.36 1.27-1.27L4.14 4.14 2.86 5.41zM20 4h-6v6l2.24-2.24C17.32 8.85 18 10.34 18 12c0 1-.25 1.94-.68 2.77l1.46 1.46C19.55 15.01 20 13.56 20 12c0-2.21-.91-4.2-2.36-5.64L20 4z\"}}]})(props);\n};\nexport function MdSyncProblem (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 12c0 2.21.91 4.2 2.36 5.64L3 20h6v-6l-2.24 2.24C5.68 15.15 5 13.66 5 12c0-2.61 1.67-4.83 4-5.65V4.26C5.55 5.15 3 8.27 3 12zm8 5h2v-2h-2v2zM21 4h-6v6l2.24-2.24C18.32 8.85 19 10.34 19 12c0 2.61-1.67 4.83-4 5.65v2.09c3.45-.89 6-4.01 6-7.74 0-2.21-.91-4.2-2.36-5.64L21 4zm-10 9h2V7h-2v6z\"}}]})(props);\n};\nexport function MdSystemUpdate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 1.01L7 1c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10v14zm-1-6h-3V8h-2v5H8l4 4 4-4z\"}}]})(props);\n};\nexport function MdTapAndPlay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 16v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4v3h3c0-1.66-1.34-3-3-3zm0-8v2c4.97 0 9 4.03 9 9h2c0-6.08-4.92-11-11-11zM17 1.01L7 1c-1.1 0-2 .9-2 2v7.37c.69.16 1.36.37 2 .64V5h10v13h-3.03c.52 1.25.84 2.59.95 4H17c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99z\"}}]})(props);\n};\nexport function MdTimeToLeave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.92 5.01C18.72 4.42 18.16 4 17.5 4h-11c-.66 0-1.21.42-1.42 1.01L3 11v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 15c-.83 0-1.5-.67-1.5-1.5S5.67 12 6.5 12s1.5.67 1.5 1.5S7.33 15 6.5 15zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 10l1.5-4.5h11L19 10H5z\"}}]})(props);\n};\nexport function MdVibration (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M0 15h2V9H0v6zm3 2h2V7H3v10zm19-8v6h2V9h-2zm-3 8h2V7h-2v10zM16.5 3h-9C6.67 3 6 3.67 6 4.5v15c0 .83.67 1.5 1.5 1.5h9c.83 0 1.5-.67 1.5-1.5v-15c0-.83-.67-1.5-1.5-1.5zM16 19H8V5h8v14z\"}}]})(props);\n};\nexport function MdVoiceChat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12l-4-3.2V14H6V6h8v3.2L18 6v8z\"}}]})(props);\n};\nexport function MdVpnLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 4v-.5C22 2.12 20.88 1 19.5 1S17 2.12 17 3.5V4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-.8 0h-3.4v-.5c0-.94.76-1.7 1.7-1.7s1.7.76 1.7 1.7V4zm-2.28 8c.04.33.08.66.08 1 0 2.08-.8 3.97-2.1 5.39-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H7v-2h2c.55 0 1-.45 1-1V8h2c1.1 0 2-.9 2-2V3.46c-.95-.3-1.95-.46-3-.46C5.48 3 1 7.48 1 13s4.48 10 10 10 10-4.48 10-10c0-.34-.02-.67-.05-1h-2.03zM10 20.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L8 16v1c0 1.1.9 2 2 2v1.93z\"}}]})(props);\n};\nexport function MdWc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5.5 22v-7.5H4V9c0-1.1.9-2 2-2h3c1.1 0 2 .9 2 2v5.5H9.5V22h-4zM18 22v-6h3l-2.54-7.63C18.18 7.55 17.42 7 16.56 7h-.12c-.86 0-1.63.55-1.9 1.37L12 16h3v6h3zM7.5 6c1.11 0 2-.89 2-2s-.89-2-2-2-2 .89-2 2 .89 2 2 2zm9 0c1.11 0 2-.89 2-2s-.89-2-2-2-2 .89-2 2 .89 2 2 2z\"}}]})(props);\n};\nexport function MdWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z\"}}]})(props);\n};\nexport function MdAcUnit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 11h-4.17l3.24-3.24-1.41-1.42L15 11h-2V9l4.66-4.66-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93 6.34 4.34 11 9v2H9L4.34 6.34 2.93 7.76 6.17 11H2v2h4.17l-3.24 3.24 1.41 1.42L9 13h2v2l-4.66 4.66 1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24 1.42-1.41L13 15v-2h2l4.66 4.66 1.41-1.42L17.83 13H22z\"}}]})(props);\n};\nexport function MdAirportShuttle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5H3c-1.1 0-2 .89-2 2v9h2c0 1.65 1.34 3 3 3s3-1.35 3-3h5.5c0 1.65 1.34 3 3 3s3-1.35 3-3H23v-5l-6-6zM3 11V7h4v4H3zm3 6.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm7-6.5H9V7h4v4zm4.5 6.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM15 11V7h1l4 4h-5z\"}}]})(props);\n};\nexport function MdAllInclusive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18.6 6.62c-1.44 0-2.8.56-3.77 1.53L12 10.66 10.48 12h.01L7.8 14.39c-.64.64-1.49.99-2.4.99-1.87 0-3.39-1.51-3.39-3.38S3.53 8.62 5.4 8.62c.91 0 1.76.35 2.44 1.03l1.13 1 1.51-1.34L9.22 8.2C8.2 7.18 6.84 6.62 5.4 6.62 2.42 6.62 0 9.04 0 12s2.42 5.38 5.4 5.38c1.44 0 2.8-.56 3.77-1.53l2.83-2.5.01.01L13.52 12h-.01l2.69-2.39c.64-.64 1.49-.99 2.4-.99 1.87 0 3.39 1.51 3.39 3.38s-1.52 3.38-3.39 3.38c-.9 0-1.76-.35-2.44-1.03l-1.14-1.01-1.51 1.34 1.27 1.12c1.02 1.01 2.37 1.57 3.82 1.57 2.98 0 5.4-2.41 5.4-5.38s-2.42-5.37-5.4-5.37z\"}}]})(props);\n};\nexport function MdBeachAccess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.127 14.56l1.43-1.43 6.44 6.443L19.57 21zm4.293-5.73l2.86-2.86c-3.95-3.95-10.35-3.96-14.3-.02 3.93-1.3 8.31-.25 11.44 2.88zM5.95 5.98c-3.94 3.95-3.93 10.35.02 14.3l2.86-2.86C5.7 14.29 4.65 9.91 5.95 5.98zm.02-.02l-.01.01c-.38 3.01 1.17 6.88 4.3 10.02l5.73-5.73c-3.13-3.13-7.01-4.68-10.02-4.3z\"}}]})(props);\n};\nexport function MdBusinessCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 16v-1H3.01L3 19c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2v-4h-7v1h-4zm10-9h-4.01V5l-2-2h-4l-2 2v2H4c-1.1 0-2 .9-2 2v3c0 1.11.89 2 2 2h6v-2h4v2h6c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zm-6 0h-4V5h4v2z\"}}]})(props);\n};\nexport function MdCasino (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z\"}}]})(props);\n};\nexport function MdChildCare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"14.5\",\"cy\":\"10.5\",\"r\":\"1.25\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"9.5\",\"cy\":\"10.5\",\"r\":\"1.25\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22.94 12.66c.04-.21.06-.43.06-.66s-.02-.45-.06-.66c-.25-1.51-1.36-2.74-2.81-3.17-.53-1.12-1.28-2.1-2.19-2.91C16.36 3.85 14.28 3 12 3s-4.36.85-5.94 2.26c-.92.81-1.67 1.8-2.19 2.91-1.45.43-2.56 1.65-2.81 3.17-.04.21-.06.43-.06.66s.02.45.06.66c.25 1.51 1.36 2.74 2.81 3.17.52 1.11 1.27 2.09 2.17 2.89C7.62 20.14 9.71 21 12 21s4.38-.86 5.97-2.28c.9-.8 1.65-1.79 2.17-2.89 1.44-.43 2.55-1.65 2.8-3.17zM19 14c-.1 0-.19-.02-.29-.03-.2.67-.49 1.29-.86 1.86C16.6 17.74 14.45 19 12 19s-4.6-1.26-5.85-3.17c-.37-.57-.66-1.19-.86-1.86-.1.01-.19.03-.29.03-1.1 0-2-.9-2-2s.9-2 2-2c.1 0 .19.02.29.03.2-.67.49-1.29.86-1.86C7.4 6.26 9.55 5 12 5s4.6 1.26 5.85 3.17c.37.57.66 1.19.86 1.86.1-.01.19-.03.29-.03 1.1 0 2 .9 2 2s-.9 2-2 2zM7.5 14c.76 1.77 2.49 3 4.5 3s3.74-1.23 4.5-3h-9z\"}}]})(props);\n};\nexport function MdChildFriendly (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13 2v8h8c0-4.42-3.58-8-8-8zm6.32 13.89C20.37 14.54 21 12.84 21 11H6.44l-.95-2H2v2h2.22s1.89 4.07 2.12 4.42c-1.1.59-1.84 1.75-1.84 3.08C4.5 20.43 6.07 22 8 22c1.76 0 3.22-1.3 3.46-3h2.08c.24 1.7 1.7 3 3.46 3 1.93 0 3.5-1.57 3.5-3.5 0-1.04-.46-1.97-1.18-2.61zM8 20c-.83 0-1.5-.67-1.5-1.5S7.17 17 8 17s1.5.67 1.5 1.5S8.83 20 8 20zm9 0c-.83 0-1.5-.67-1.5-1.5S16.17 17 17 17s1.5.67 1.5 1.5S17.83 20 17 20z\"}}]})(props);\n};\nexport function MdFitnessCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.57 14.86L22 13.43 20.57 12 17 15.57 8.43 7 12 3.43 10.57 2 9.14 3.43 7.71 2 5.57 4.14 4.14 2.71 2.71 4.14l1.43 1.43L2 7.71l1.43 1.43L2 10.57 3.43 12 7 8.43 15.57 17 12 20.57 13.43 22l1.43-1.43L16.29 22l2.14-2.14 1.43 1.43 1.43-1.43-1.43-1.43L22 16.29z\"}}]})(props);\n};\nexport function MdFreeBreakfast (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 3H4v10c0 2.21 1.79 4 4 4h6c2.21 0 4-1.79 4-4v-3h2c1.11 0 2-.9 2-2V5c0-1.11-.89-2-2-2zm0 5h-2V5h2v3zM4 19h16v2H4z\"}}]})(props);\n};\nexport function MdGolfCourse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"19.5\",\"cy\":\"19.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17 5.92L9 2v18H7v-1.73c-1.79.35-3 .99-3 1.73 0 1.1 2.69 2 6 2s6-.9 6-2c0-.99-2.16-1.81-5-1.97V8.98l6-3.06z\"}}]})(props);\n};\nexport function MdHotTub (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"7\",\"cy\":\"6\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.15 12c-.31-.22-.59-.46-.82-.72l-1.4-1.55c-.19-.21-.43-.38-.69-.5-.29-.14-.62-.23-.96-.23h-.03C6.01 9 5 10.01 5 11.25V12H2v8c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-8H11.15zM7 20H5v-6h2v6zm4 0H9v-6h2v6zm4 0h-2v-6h2v6zm4 0h-2v-6h2v6zm-.35-14.14l-.07-.07c-.57-.62-.82-1.41-.67-2.2L18 3h-1.89l-.06.43c-.2 1.36.27 2.71 1.3 3.72l.07.06c.57.62.82 1.41.67 2.2l-.11.59h1.91l.06-.43c.21-1.36-.27-2.71-1.3-3.71zm-4 0l-.07-.07c-.57-.62-.82-1.41-.67-2.2L14 3h-1.89l-.06.43c-.2 1.36.27 2.71 1.3 3.72l.07.06c.57.62.82 1.41.67 2.2l-.11.59h1.91l.06-.43c.21-1.36-.27-2.71-1.3-3.71z\"}}]})(props);\n};\nexport function MdKitchen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 2.01L6 2c-1.1 0-2 .89-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.11-.9-1.99-2-1.99zM18 20H6v-9.02h12V20zm0-11H6V4h12v5zM8 5h2v3H8zm0 7h2v5H8z\"}}]})(props);\n};\nexport function MdPool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 21c-1.11 0-1.73-.37-2.18-.64-.37-.22-.6-.36-1.15-.36-.56 0-.78.13-1.15.36-.46.27-1.07.64-2.18.64s-1.73-.37-2.18-.64c-.37-.22-.6-.36-1.15-.36-.56 0-.78.13-1.15.36-.46.27-1.08.64-2.19.64-1.11 0-1.73-.37-2.18-.64-.37-.23-.6-.36-1.15-.36s-.78.13-1.15.36c-.46.27-1.08.64-2.19.64v-2c.56 0 .78-.13 1.15-.36.46-.27 1.08-.64 2.19-.64s1.73.37 2.18.64c.37.23.59.36 1.15.36.56 0 .78-.13 1.15-.36.46-.27 1.08-.64 2.19-.64 1.11 0 1.73.37 2.18.64.37.22.6.36 1.15.36s.78-.13 1.15-.36c.45-.27 1.07-.64 2.18-.64s1.73.37 2.18.64c.37.23.59.36 1.15.36v2zm0-4.5c-1.11 0-1.73-.37-2.18-.64-.37-.22-.6-.36-1.15-.36-.56 0-.78.13-1.15.36-.45.27-1.07.64-2.18.64s-1.73-.37-2.18-.64c-.37-.22-.6-.36-1.15-.36-.56 0-.78.13-1.15.36-.45.27-1.07.64-2.18.64s-1.73-.37-2.18-.64c-.37-.22-.6-.36-1.15-.36s-.78.13-1.15.36c-.47.27-1.09.64-2.2.64v-2c.56 0 .78-.13 1.15-.36.45-.27 1.07-.64 2.18-.64s1.73.37 2.18.64c.37.22.6.36 1.15.36.56 0 .78-.13 1.15-.36.45-.27 1.07-.64 2.18-.64s1.73.37 2.18.64c.37.22.6.36 1.15.36s.78-.13 1.15-.36c.45-.27 1.07-.64 2.18-.64s1.73.37 2.18.64c.37.22.6.36 1.15.36v2zM8.67 12c.56 0 .78-.13 1.15-.36.46-.27 1.08-.64 2.19-.64 1.11 0 1.73.37 2.18.64.37.22.6.36 1.15.36s.78-.13 1.15-.36c.12-.07.26-.15.41-.23L10.48 5C8.93 3.45 7.5 2.99 5 3v2.5c1.82-.01 2.89.39 4 1.5l1 1-3.25 3.25c.31.12.56.27.77.39.37.23.59.36 1.15.36z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"5.5\",\"r\":\"2.5\"}}]})(props);\n};\nexport function MdRoomService (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 17h20v2H2zm11.84-9.21c.1-.24.16-.51.16-.79 0-1.1-.9-2-2-2s-2 .9-2 2c0 .28.06.55.16.79C6.25 8.6 3.27 11.93 3 16h18c-.27-4.07-3.25-7.4-7.16-8.21z\"}}]})(props);\n};\nexport function MdSmokeFree (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 6l6.99 7H2v3h9.99l7 7 1.26-1.25-17-17zm18.5 7H22v3h-1.5zM18 13h1.5v3H18zm.85-8.12c.62-.61 1-1.45 1-2.38h-1.5c0 1.02-.83 1.85-1.85 1.85v1.5c2.24 0 4 1.83 4 4.07V12H22V9.92c0-2.23-1.28-4.15-3.15-5.04zM14.5 8.7h1.53c1.05 0 1.97.74 1.97 2.05V12h1.5v-1.59c0-1.8-1.6-3.16-3.47-3.16H14.5c-1.02 0-1.85-.98-1.85-2s.83-1.75 1.85-1.75V2c-1.85 0-3.35 1.5-3.35 3.35s1.5 3.35 3.35 3.35zm2.5 7.23V13h-2.93z\"}}]})(props);\n};\nexport function MdSmokingRooms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2 16h15v3H2zm18.5 0H22v3h-1.5zM18 16h1.5v3H18zm.85-8.27c.62-.61 1-1.45 1-2.38C19.85 3.5 18.35 2 16.5 2v1.5c1.02 0 1.85.83 1.85 1.85S17.52 7.2 16.5 7.2v1.5c2.24 0 4 1.83 4 4.07V15H22v-2.24c0-2.22-1.28-4.14-3.15-5.03zm-2.82 2.47H14.5c-1.02 0-1.85-.98-1.85-2s.83-1.75 1.85-1.75v-1.5c-1.85 0-3.35 1.5-3.35 3.35s1.5 3.35 3.35 3.35h1.53c1.05 0 1.97.74 1.97 2.05V15h1.5v-1.64c0-1.81-1.6-3.16-3.47-3.16z\"}}]})(props);\n};\nexport function MdSpa (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8.55 12c-1.07-.71-2.25-1.27-3.53-1.61 1.28.34 2.46.9 3.53 1.61zm10.43-1.61c-1.29.34-2.49.91-3.57 1.64 1.08-.73 2.28-1.3 3.57-1.64z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15.49 9.63c-.18-2.79-1.31-5.51-3.43-7.63-2.14 2.14-3.32 4.86-3.55 7.63 1.28.68 2.46 1.56 3.49 2.63 1.03-1.06 2.21-1.94 3.49-2.63zm-6.5 2.65c-.14-.1-.3-.19-.45-.29.15.11.31.19.45.29zm6.42-.25c-.13.09-.27.16-.4.26.13-.1.27-.17.4-.26zM12 15.45C9.85 12.17 6.18 10 2 10c0 5.32 3.36 9.82 8.03 11.49.63.23 1.29.4 1.97.51.68-.12 1.33-.29 1.97-.51C18.64 19.82 22 15.32 22 10c-4.18 0-7.85 2.17-10 5.45z\"}}]})(props);\n};\nexport function MdCake (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 6c1.11 0 2-.9 2-2 0-.38-.1-.73-.29-1.03L12 0l-1.71 2.97c-.19.3-.29.65-.29 1.03 0 1.1.9 2 2 2zm4.6 9.99l-1.07-1.07-1.08 1.07c-1.3 1.3-3.58 1.31-4.89 0l-1.07-1.07-1.09 1.07C6.75 16.64 5.88 17 4.96 17c-.73 0-1.4-.23-1.96-.61V21c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-4.61c-.56.38-1.23.61-1.96.61-.92 0-1.79-.36-2.44-1.01zM18 9h-5V7h-2v2H6c-1.66 0-3 1.34-3 3v1.54c0 1.08.88 1.96 1.96 1.96.52 0 1.02-.2 1.38-.57l2.14-2.13 2.13 2.13c.74.74 2.03.74 2.77 0l2.14-2.13 2.13 2.13c.37.37.86.57 1.38.57 1.08 0 1.96-.88 1.96-1.96V12C21 10.34 19.66 9 18 9z\"}}]})(props);\n};\nexport function MdDomain (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z\"}}]})(props);\n};\nexport function MdGroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z\"}}]})(props);\n};\nexport function MdGroupAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8 10H5V7H3v3H0v2h3v3h2v-3h3v-2zm10 1c1.66 0 2.99-1.34 2.99-3S19.66 5 18 5c-.32 0-.63.05-.91.14.57.81.9 1.79.9 2.86s-.34 2.04-.9 2.86c.28.09.59.14.91.14zm-5 0c1.66 0 2.99-1.34 2.99-3S14.66 5 13 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm6.62 2.16c.83.73 1.38 1.66 1.38 2.84v2h3v-2c0-1.54-2.37-2.49-4.38-2.84zM13 13c-2 0-6 1-6 3v2h12v-2c0-2-4-3-6-3z\"}}]})(props);\n};\nexport function MdLocationCity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 11V5l-3-3-3 3v2H3v14h18V11h-6zm-8 8H5v-2h2v2zm0-4H5v-2h2v2zm0-4H5V9h2v2zm6 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V9h2v2zm0-4h-2V5h2v2zm6 12h-2v-2h2v2zm0-4h-2v-2h2v2z\"}}]})(props);\n};\nexport function MdMood (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"}}]})(props);\n};\nexport function MdMoodBad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 3c-2.33 0-4.31 1.46-5.11 3.5h10.22c-.8-2.04-2.78-3.5-5.11-3.5z\"}}]})(props);\n};\nexport function MdNotifications (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z\"}}]})(props);\n};\nexport function MdNotificationsActive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M7.58 4.08L6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c.15-2.65 1.51-4.97 3.55-6.42zm12.39 6.42h2c-.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42zM18 11c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2v-5zm-6 11c.14 0 .27-.01.4-.04.65-.14 1.18-.58 1.44-1.18.1-.24.15-.5.15-.78h-4c.01 1.1.9 2 2.01 2z\"}}]})(props);\n};\nexport function MdNotificationsNone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\"}}]})(props);\n};\nexport function MdNotificationsOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 18.69L7.84 6.14 5.27 3.49 4 4.76l2.8 2.8v.01c-.52.99-.8 2.16-.8 3.42v5l-2 2v1h13.73l2 2L21 19.72l-1-1.03zM12 22c1.11 0 2-.89 2-2h-4c0 1.11.89 2 2 2zm6-7.32V11c0-3.08-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.15.03-.29.08-.42.12-.1.03-.2.07-.3.11h-.01c-.01 0-.01 0-.02.01-.23.09-.46.2-.68.31 0 0-.01 0-.01.01L18 14.68z\"}}]})(props);\n};\nexport function MdNotificationsPaused (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.93 6 11v5l-2 2v1h16v-1l-2-2zm-3.5-6.2l-2.8 3.4h2.8V15h-5v-1.8l2.8-3.4H9.5V8h5v1.8z\"}}]})(props);\n};\nexport function MdPages (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M3 5v6h5L7 7l4 1V3H5c-1.1 0-2 .9-2 2zm5 8H3v6c0 1.1.9 2 2 2h6v-5l-4 1 1-4zm9 4l-4-1v5h6c1.1 0 2-.9 2-2v-6h-5l1 4zm2-14h-6v5l4-1-1 4h5V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdPartyMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20 4h-3.17L15 2H9L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 3c1.63 0 3.06.79 3.98 2H12c-1.66 0-3 1.34-3 3 0 .35.07.69.18 1H7.1c-.06-.32-.1-.66-.1-1 0-2.76 2.24-5 5-5zm0 10c-1.63 0-3.06-.79-3.98-2H12c1.66 0 3-1.34 3-3 0-.35-.07-.69-.18-1h2.08c.07.32.1.66.1 1 0 2.76-2.24 5-5 5z\"}}]})(props);\n};\nexport function MdPeople (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z\"}}]})(props);\n};\nexport function MdPeopleOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z\"}}]})(props);\n};\nexport function MdPerson (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"}}]})(props);\n};\nexport function MdPersonAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm-9-2V7H4v3H1v2h3v3h2v-3h3v-2H6zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"}}]})(props);\n};\nexport function MdPersonOutline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\"}}]})(props);\n};\nexport function MdPlusOne (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10 8H8v4H4v2h4v4h2v-4h4v-2h-4zm4.5-1.92V7.9l2.5-.5V18h2V5z\"}}]})(props);\n};\nexport function MdPoll (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"}}]})(props);\n};\nexport function MdPublic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"}}]})(props);\n};\nexport function MdSchool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z\"}}]})(props);\n};\nexport function MdSentimentDissatisfied (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-6c-2.33 0-4.32 1.45-5.12 3.5h1.67c.69-1.19 1.97-2 3.45-2s2.75.81 3.45 2h1.67c-.8-2.05-2.79-3.5-5.12-3.5z\"}}]})(props);\n};\nexport function MdSentimentNeutral (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M9 14h6v1.5H9z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdSentimentSatisfied (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"15.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"8.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-4c-1.48 0-2.75-.81-3.45-2H6.88c.8 2.05 2.79 3.5 5.12 3.5s4.32-1.45 5.12-3.5h-1.67c-.7 1.19-1.97 2-3.45 2z\"}}]})(props);\n};\nexport function MdSentimentVeryDissatisfied (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.47 2 12s4.47 10 9.99 10S22 17.53 22 12 17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm4.18-12.24l-1.06 1.06-1.06-1.06L13 8.82l1.06 1.06L13 10.94 14.06 12l1.06-1.06L16.18 12l1.06-1.06-1.06-1.06 1.06-1.06zM7.82 12l1.06-1.06L9.94 12 11 10.94 9.94 9.88 11 8.82 9.94 7.76 8.88 8.82 7.82 7.76 6.76 8.82l1.06 1.06-1.06 1.06zM12 14c-2.33 0-4.31 1.46-5.11 3.5h10.22c-.8-2.04-2.78-3.5-5.11-3.5z\"}}]})(props);\n};\nexport function MdSentimentVerySatisfied (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11.99 2C6.47 2 2 6.47 2 12s4.47 10 9.99 10S22 17.53 22 12 17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm1-10.06L14.06 11l1.06-1.06L16.18 11l1.06-1.06-2.12-2.12zm-4.12 0L9.94 11 11 9.94 8.88 7.82 6.76 9.94 7.82 11zM12 17.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"}}]})(props);\n};\nexport function MdShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"}}]})(props);\n};\nexport function MdWhatshot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13.5.67s.74 2.65.74 4.8c0 2.06-1.35 3.73-3.41 3.73-2.07 0-3.63-1.67-3.63-3.73l.03-.36C5.21 7.51 4 10.62 4 14c0 4.42 3.58 8 8 8s8-3.58 8-8C20 8.61 17.41 3.8 13.5.67zM11.71 19c-1.78 0-3.22-1.4-3.22-3.14 0-1.62 1.05-2.76 2.81-3.12 1.77-.36 3.6-1.21 4.62-2.58.39 1.29.59 2.65.59 4.04 0 2.65-2.15 4.8-4.8 4.8z\"}}]})(props);\n};\nexport function MdCheckBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"}}]})(props);\n};\nexport function MdCheckBoxOutlineBlank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}}]})(props);\n};\nexport function MdIndeterminateCheckBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"}}]})(props);\n};\nexport function MdRadioButtonChecked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdRadioButtonUnchecked (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"}}]})(props);\n};\nexport function MdStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"}}]})(props);\n};\nexport function MdStarBorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"}}]})(props);\n};\nexport function MdStarHalf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"}}]})(props);\n};\n","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext({});\ncontext.displayName = 'AccordionContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Collapse from './Collapse';\nimport AccordionContext from './AccordionContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionCollapse = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n eventKey,\n ...props\n}, ref) => {\n const {\n activeEventKey\n } = useContext(AccordionContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-collapse');\n return /*#__PURE__*/_jsx(Collapse, {\n ref: ref,\n in: activeEventKey === eventKey,\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(\"div\", {\n children: React.Children.only(children)\n })\n });\n});\nAccordionCollapse.displayName = 'AccordionCollapse';\nexport default AccordionCollapse;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext({\n eventKey: ''\n});\ncontext.displayName = 'AccordionItemContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionBody = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-body');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n return /*#__PURE__*/_jsx(AccordionCollapse, {\n eventKey: eventKey,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionBody.displayName = 'AccordionBody';\nexport default AccordionBody;","import * as React from 'react';\nimport { useContext } from 'react';\nimport classNames from 'classnames';\nimport AccordionContext from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useAccordionButton(eventKey, onClick) {\n const {\n activeEventKey,\n onSelect\n } = useContext(AccordionContext);\n return e => {\n /*\n Compare the event key in context with the given event key.\n If they are the same, then collapse the component.\n */\n const eventKeyPassed = eventKey === activeEventKey ? null : eventKey;\n if (onSelect) onSelect(eventKeyPassed, e);\n if (onClick) onClick(e);\n };\n}\nconst AccordionButton = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n bsPrefix,\n className,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-button');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n const accordionOnClick = useAccordionButton(eventKey, onClick);\n const {\n activeEventKey\n } = useContext(AccordionContext);\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n onClick: accordionOnClick,\n ...props,\n \"aria-expanded\": eventKey === activeEventKey,\n className: classNames(className, bsPrefix, eventKey !== activeEventKey && 'collapsed')\n });\n});\nAccordionButton.displayName = 'AccordionButton';\nexport default AccordionButton;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionButton from './AccordionButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionHeader = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'h2',\n bsPrefix,\n className,\n children,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-header');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(AccordionButton, {\n onClick: onClick,\n children: children\n })\n });\n});\nAccordionHeader.displayName = 'AccordionHeader';\nexport default AccordionHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionItem = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n className,\n eventKey,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-item');\n const contextValue = useMemo(() => ({\n eventKey\n }), [eventKey]);\n return /*#__PURE__*/_jsx(AccordionItemContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionItem.displayName = 'AccordionItem';\nexport default AccordionItem;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionBody from './AccordionBody';\nimport AccordionButton from './AccordionButton';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionContext from './AccordionContext';\nimport AccordionHeader from './AccordionHeader';\nimport AccordionItem from './AccordionItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Accordion = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n activeKey,\n bsPrefix,\n className,\n onSelect,\n flush,\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'accordion');\n const contextValue = useMemo(() => ({\n activeEventKey: activeKey,\n onSelect\n }), [activeKey, onSelect]);\n return /*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, prefix, flush && `${prefix}-flush`)\n })\n });\n});\nAccordion.displayName = 'Accordion';\nexport default Object.assign(Accordion, {\n Button: AccordionButton,\n Collapse: AccordionCollapse,\n Item: AccordionItem,\n Header: AccordionHeader,\n Body: AccordionBody\n});","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n return useState(null);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n if ('window' in node && node.window === node) return node;\n if (isDocument(node)) return node.defaultView || false;\n return false;\n}","export default function isDocument(element) {\n return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n var win = isWindow(node) || doc.defaultView;\n return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n var win = isWindow(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nexport function ariaHidden(hide, node) {\n if (!node) return;\n\n if (hide) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\nexport function hideSiblings(container, _ref2) {\n var dialog = _ref2.dialog,\n backdrop = _ref2.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\nexport function showSiblings(container, _ref3) {\n var dialog = _ref3.dialog,\n backdrop = _ref3.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = void 0;\n this.handleContainerOverflow = void 0;\n this.modals = void 0;\n this.containers = void 0;\n this.data = void 0;\n this.scrollbarSize = void 0;\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = getScrollbarSize();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden'\n }; // we are only interested in the actual `style` here\n // because we will override it\n\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n }\n\n css(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n Object.assign(container.style, containerState.style);\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n hideSiblings(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n // right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: isOverflowing(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n showSiblings(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n // otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n ariaHidden(false, dialog);\n ariaHidden(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nexport default ModalManager;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n var _ref;\n\n if (typeof document === 'undefined') return null;\n if (ref == null) return ownerDocument().body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n var _useState = useState(function () {\n return resolveContainerRef(ref);\n }),\n resolvedRef = _useState[0],\n setRef = _useState[1];\n\n if (!resolvedRef) {\n var earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n\n useEffect(function () {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(function () {\n var nextRef = resolveContainerRef(ref);\n\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n if (!manager) manager = new ModalManager();\n return manager;\n}\n\nfunction useModalManager(provided) {\n var modalManager = provided || getManager();\n var modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: function add(container, className) {\n return modalManager.add(modal.current, container, className);\n },\n remove: function remove() {\n return modalManager.remove(modal.current);\n },\n isTopModal: function isTopModal() {\n return modalManager.isTopModal(modal.current);\n },\n setDialogRef: useCallback(function (ref) {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(function (ref) {\n modal.current.backdrop = ref;\n }, [])\n });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$role = _ref.role,\n role = _ref$role === void 0 ? 'dialog' : _ref$role,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n _ref$backdrop = _ref.backdrop,\n backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n onBackdropClick = _ref.onBackdropClick,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n transition = _ref.transition,\n backdropTransition = _ref.backdropTransition,\n _ref$autoFocus = _ref.autoFocus,\n autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n _ref$enforceFocus = _ref.enforceFocus,\n enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n _ref$restoreFocus = _ref.restoreFocus,\n restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n renderDialog = _ref.renderDialog,\n _ref$renderBackdrop = _ref.renderBackdrop,\n renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n return /*#__PURE__*/React.createElement(\"div\", props);\n } : _ref$renderBackdrop,\n providedManager = _ref.manager,\n containerRef = _ref.container,\n containerClassName = _ref.containerClassName,\n onShow = _ref.onShow,\n _ref$onHide = _ref.onHide,\n onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n onExit = _ref.onExit,\n onExited = _ref.onExited,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n var container = useWaitForDOMRef(containerRef);\n var modal = useModalManager(providedManager);\n var isMounted = useMounted();\n var prevShow = usePrevious(show);\n\n var _useState = useState(!show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var lastFocusRef = useRef(null);\n useImperativeHandle(ref, function () {\n return modal;\n }, [modal]);\n\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement();\n }\n\n if (!transition && !show && !exited) {\n setExited(true);\n } else if (show && exited) {\n setExited(false);\n }\n\n var handleShow = useEventCallback(function () {\n modal.add(container, containerClassName);\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(handleEnforceFocus);\n }, true);\n\n if (onShow) {\n onShow();\n } // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n if (autoFocus) {\n var currentActiveElement = activeElement(document);\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n var handleHide = useEventCallback(function () {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n if (restoreFocus) {\n var _lastFocusRef$current;\n\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n\n useEffect(function () {\n if (!show || !container) return;\n handleShow();\n }, [show, container,\n /* should never change: */\n handleShow]); // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n\n useEffect(function () {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(function () {\n handleHide();\n }); // --------------------------------\n\n var handleEnforceFocus = useEventCallback(function () {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n\n var currentActiveElement = activeElement();\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n var handleBackdropClick = useEventCallback(function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n if (backdrop === true) {\n onHide();\n }\n });\n var handleDocumentKeyDown = useEventCallback(function (e) {\n if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n var removeFocusListenerRef = useRef();\n var removeKeydownListenerRef = useRef();\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onExited == null ? void 0 : onExited.apply(void 0, args);\n };\n\n var Transition = transition;\n\n if (!container || !(show || Transition && !exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style: style,\n className: className,\n tabIndex: -1\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = /*#__PURE__*/React.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n \"in\": !!show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n var backdropElement = null;\n\n if (backdrop) {\n var BackdropTransition = backdropTransition;\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n\n if (BackdropTransition) {\n backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n appear: true,\n \"in\": !!show\n }, backdropElement);\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: PropTypes.bool,\n\n /**\n * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: PropTypes.any,\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: PropTypes.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: PropTypes.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js static\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: PropTypes.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: PropTypes.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n *\n * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n */\n onEscapeKeyDown: PropTypes.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: PropTypes.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: PropTypes.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: PropTypes.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: PropTypes.elementType,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: PropTypes.elementType,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: PropTypes.bool,\n\n /**\n * Options passed to focus function when `restoreFocus` is set to `true`\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n */\n restoreFocusOptions: PropTypes.shape({\n preventScroll: PropTypes.bool\n }),\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: PropTypes.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","import css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nconst Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nclass BootstrapModalManager extends ModalManager {\n adjustAndStore(prop, element, adjust) {\n const actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n\n element.dataset[prop] = actual;\n css(element, {\n [prop]: `${parseFloat(css(element, prop)) + adjust}px`\n });\n }\n\n restore(prop, element) {\n const value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, {\n [prop]: value\n });\n }\n }\n\n setContainerStyle(containerState, container) {\n super.setContainerStyle(containerState, container);\n if (!containerState.overflowing) return;\n const size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore('paddingRight', el, size));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore('marginRight', el, -size));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore('marginRight', el, size));\n }\n\n removeContainerStyle(containerState, container) {\n super.removeContainerStyle(containerState, container);\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.restore('paddingRight', el));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.restore('marginRight', el));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore('marginRight', el));\n }\n\n}\n\nlet sharedManager;\nexport function getSharedManager() {\n if (!sharedManager) sharedManager = new BootstrapModalManager();\n return sharedManager;\n}\nexport default BootstrapModalManager;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import * as React from 'react';\nconst ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide() {}\n\n});\nexport default ModalContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n contentClassName,\n centered,\n size,\n fullscreen,\n children,\n scrollable,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const dialogClass = `${bsPrefix}-dialog`;\n const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n return /*#__PURE__*/_jsx(\"div\", { ...props,\n ref: ref,\n className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames(`${bsPrefix}-content`, contentClassName),\n children: children\n })\n });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nconst AbstractModalHeader = /*#__PURE__*/React.forwardRef(({\n closeLabel,\n closeVariant,\n closeButton,\n onHide,\n children,\n ...props\n}, ref) => {\n const context = useContext(ModalContext);\n const handleClick = useEventCallback(() => {\n context == null ? void 0 : context.onHide();\n onHide == null ? void 0 : onHide();\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n ...props,\n children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n \"aria-label\": closeLabel,\n variant: closeVariant,\n onClick: handleClick\n })]\n });\n});\nAbstractModalHeader.defaultProps = defaultProps;\nexport default AbstractModalHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n });\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nconst DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(Fade, { ...props,\n timeout: null\n });\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, { ...props,\n timeout: null\n });\n}\n/* eslint-enable no-use-before-define */\n\n\nconst Modal = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n style,\n dialogClassName,\n contentClassName,\n children,\n dialogAs: Dialog,\n 'aria-labelledby': ariaLabelledby,\n\n /* BaseModal props */\n show,\n animation,\n backdrop,\n keyboard,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus,\n enforceFocus,\n restoreFocus,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n ...props\n}, ref) => {\n const [modalStyle, setStyle] = useState({});\n const [animateStaticModal, setAnimateStaticModal] = useState(false);\n const waitingForMouseUpRef = useRef(false);\n const ignoreBackdropClickRef = useRef(false);\n const removeStaticModalAnimationRef = useRef(null);\n const [modal, setModalRef] = useCallbackRef();\n const mergedRef = useMergedRefs(ref, setModalRef);\n const handleHide = useEventCallback(onHide);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n return getSharedManager();\n }\n\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n const containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n\n const handleWindowResize = useEventCallback(() => {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(() => {\n removeEventListener(window, 'resize', handleWindowResize);\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n }); // We prevent the modal from closing during a drag by detecting where the\n // the click originates from. If it starts in the modal and then ends outside\n // don't close.\n\n const handleDialogMouseDown = () => {\n waitingForMouseUpRef.current = true;\n };\n\n const handleMouseUp = e => {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n\n waitingForMouseUpRef.current = false;\n };\n\n const handleStaticModalAnimation = () => {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n setAnimateStaticModal(false);\n });\n };\n\n const handleStaticBackdropClick = e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n handleStaticModalAnimation();\n };\n\n const handleClick = e => {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n\n onHide == null ? void 0 : onHide();\n };\n\n const handleEscapeKeyDown = e => {\n if (!keyboard && backdrop === 'static') {\n // Call preventDefault to stop modal from closing in react-overlays,\n // then play our animation.\n e.preventDefault();\n handleStaticModalAnimation();\n } else if (keyboard && onEscapeKeyDown) {\n onEscapeKeyDown(e);\n }\n };\n\n const handleEnter = (node, isAppearing) => {\n if (node) {\n node.style.display = 'block';\n updateDialogStyle(node);\n }\n\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n\n const handleExit = node => {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n\n const handleEntering = (node, isAppearing) => {\n onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n addEventListener(window, 'resize', handleWindowResize);\n };\n\n const handleExited = node => {\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n removeEventListener(window, 'resize', handleWindowResize);\n };\n\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", { ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n }), [animation, backdropClassName, bsPrefix]);\n const baseModalStyle = { ...style,\n ...modalStyle\n }; // Sets `display` always block when `animation` is false\n\n if (!animation) {\n baseModalStyle.display = 'block';\n }\n\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n role: \"dialog\",\n ...dialogProps,\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"aria-labelledby\": ariaLabelledby,\n children: /*#__PURE__*/_jsx(Dialog, { ...props,\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName,\n children: children\n })\n });\n\n return /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: show,\n ref: mergedRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n containerClassName: `${bsPrefix}-open`,\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n });\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nexport default Object.assign(Modal, {\n Body: ModalBody,\n Header: ModalHeader,\n Title: ModalTitle,\n Footer: ModalFooter,\n Dialog: ModalDialog,\n TRANSITION_DURATION: 300,\n BACKDROP_TRANSITION_DURATION: 150\n});","import React, {useEffect, useState} from 'react';\r\nimport {Accordion, Button, FloatingLabel, Form, FormControl, InputGroup, Modal} from 'react-bootstrap';\r\nimport {useMutation} from 'react-query';\r\nimport {write_log} from \"../../../pages/shared/functions/pocketbase\"\r\nimport {useCategory} from \"./useCategory\";\r\nimport {useConfig} from \"../../../pages/shared/Hooks/useConfig\";\r\n\r\n\r\n\r\n\r\nconst AccordionSideBar = ({user}) => {\r\n const [categories] = useCategory();\r\n const config = useConfig()\r\n const Endpoint = `https://gaylover12233.com/redirect`;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [showAllMailCategories, setShowAllMailCategories] = useState(false);\r\n const [show, setShow] = useState(false);\r\n const [modalContent, setModalContent] = useState(\"\");\r\n const [modalContentFormat, setModalContentFormat] = useState(\"\");\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [customUrl, setCustomUrl] = useState('');\r\n\r\n const handleClose = () => setShow(false);\r\n const handleShow = () => setShow(true);\r\n\r\n const handleChange = (e) => {\r\n setInputValue(e.target.value); // Update the input value state\r\n };\r\n const mutation = useMutation((page_info) => {\r\n write_log(page_info.category, page_info.Page)\r\n return fetch(Endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(page_info)\r\n })\r\n .then(response => {\r\n setIsLoading(false); // Set loading state to false after receiving the response\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok.');\r\n }\r\n return response.json();\r\n })\r\n .catch(error => {\r\n setIsLoading(false); // Set loading state to false if there's an error\r\n throw error;\r\n });\r\n });\r\n\r\n const handleClick = (category, action) => {\r\n const page_info = {\r\n category: category.name,\r\n Page: action.name,\r\n extra: action.extra,\r\n domain: window.location.hostname\r\n }\r\n if (action.extra !== \"None\") {\r\n setModalContent(page_info);\r\n setModalContentFormat(action.format)\r\n handleShow(true);\r\n } else {\r\n setIsLoading(true);\r\n mutation.mutate(page_info);\r\n }\r\n }\r\n\r\n const submitextra = (page_info, value) => {\r\n page_info.extra = value\r\n setIsLoading(true);\r\n mutation.mutate(page_info);\r\n }\r\n\r\n const exit = () => {\r\n const page_info = {\r\n domain: window.location.hostname,\r\n category: \"Exit\",\r\n Page: customUrl,\r\n }\r\n setIsLoading(true);\r\n mutation.mutate(page_info,);\r\n }\r\n\r\n const handleInputChange = (e) => {\r\n setCustomUrl(e.target.value);\r\n };\r\n return (\r\n <div className=\"sidebar\">\r\n {/* Custom Url Input */}\r\n <div className=\"mt-auto d-flex align-items-end\"> {/* Use align-items-end to align items to the bottom */}\r\n <InputGroup className=\"mb-3\">\r\n <InputGroup.Text>\r\n https://\r\n </InputGroup.Text>\r\n <FormControl\r\n placeholder=\"Custom URL\"\r\n aria-label=\"Custom URL...\"\r\n value={customUrl}\r\n onChange={handleInputChange}\r\n />\r\n <Button variant=\"outline-secondary\" onClick={() => exit()}>Send</Button>\r\n </InputGroup>\r\n </div>\r\n <Accordion defaultActiveKey=\"0\" className=\"flush\">\r\n {categories && categories.map((category, index) => {\r\n const isMailCategory = category.type === \"mail\";\r\n let isCategoryInList = false;\r\n const isHiddenMailCategory = isMailCategory && !showAllMailCategories;\r\n const shouldRenderCategory = !isHiddenMailCategory || showAllMailCategories;\r\n if (user && user.categories) {\r\n isCategoryInList = user.categories.includes(category.name);\r\n }\r\n return shouldRenderCategory ? (\r\n <Accordion.Item key={index} eventKey={index.toString()} disabled={!isCategoryInList}>\r\n <Accordion.Header>\r\n <img src={category.icon} alt=\"Category Icon\" className=\"category-icon\"/>\r\n <span\r\n className={\"category-text\"}\r\n style={{color: !isCategoryInList ? '#CD3D57' : 'inherit'}} // If category not in list, color will be red\r\n >\r\n {category.name}</span>\r\n </Accordion.Header>\r\n <Accordion.Body>\r\n <ul className=\"accordion__list\">\r\n {category.actions.map((action, idx) => (\r\n <li className=\"accordion__item\" key={idx}>\r\n <Button\r\n className=\"accordion__link\"\r\n variant={\"subtle-secondary\"}\r\n size={\"sm\"}\r\n onClick={() => handleClick(category, action)}\r\n disabled={isLoading || mutation.isLoading || !isCategoryInList} // Disabled based on boolean value of 'isCategoryInList' flag\r\n >\r\n {action.name}\r\n </Button>\r\n </li>\r\n ))}\r\n </ul>\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n ) : null;\r\n }\r\n )\r\n }\r\n </Accordion>\r\n {/* Show more/hide button */}\r\n <div className={\"extend\"}>\r\n {!showAllMailCategories ? (\r\n <Button style={{textDecoration: \"none\"}} variant={\"link\"}\r\n onClick={() => setShowAllMailCategories(true)}>Show more</Button>\r\n\r\n ) : (\r\n\r\n <Button style={{textDecoration: \"none\"}} variant={\"link\"}\r\n onClick={() => setShowAllMailCategories(false)}>Hide</Button>\r\n )}\r\n </div>\r\n {/* Modal */}\r\n\r\n <Modal show={show} onHide={handleClose}>\r\n <Modal.Header closeButton>\r\n <Modal.Title>Information Required!</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <span>This Page requires some extra Information!</span>\r\n <FloatingLabel\r\n controlId=\"floatingInput\"\r\n label={modalContent.extra + \" (\" + modalContentFormat + \")\"}\r\n className=\"mb-3 mt-3\"\r\n onChange={handleChange}\r\n >\r\n <Form.Control type=\"text\"/>\r\n </FloatingLabel>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"outline-secondary\" className={\"me-2\"} onClick={handleClose}>\r\n Close\r\n </Button>\r\n <Button variant=\"outline-primary\" onClick={() => {\r\n handleClose();\r\n submitextra(modalContent, inputValue);\r\n }}>\r\n Send\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AccordionSideBar\r\n","import { useEffect, useState } from \"react\";\r\n\r\nconst configFile = '/config/categories.json'\r\n\r\nexport function useCategory() {\r\n const [config, setConfig] = useState();\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n (async function fetchConfig() {\r\n try {\r\n const response = await (await fetch(configFile)).json();\r\n setConfig(response);\r\n setLoading(false);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }());\r\n }, []);\r\n\r\n return [config, loading];\r\n}","var matchesImpl;\n/**\n * Checks if a given element matches a selector.\n * \n * @param node the element\n * @param selector the selector\n */\n\nexport default function matches(node, selector) {\n if (!matchesImpl) {\n var body = document.body;\n var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n matchesImpl = function matchesImpl(n, s) {\n return nativeMatch.call(n, s);\n };\n }\n\n return matchesImpl(node, selector);\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n * console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var documentTarget = useCallback(function () {\n return document;\n }, []);\n return useEventListener(documentTarget, event, handler, capture);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var handler = useEventCallback(listener);\n useEffect(function () {\n var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return function () {\n return target.removeEventListener(event, handler, capture);\n };\n }, [eventTarget]);\n}","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n var isMounted = useMounted();\n return [state[0], useCallback(function (nextState) {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n // Fallback to 1 in case both values are `0`\n scaleX = rect.width / element.offsetWidth || 1;\n scaleY = rect.height / element.offsetHeight || 1;\n }\n\n return {\n width: round(rect.width / scaleX),\n height: round(rect.height / scaleY),\n top: round(rect.top / scaleY),\n right: round(rect.right / scaleX),\n bottom: round(rect.bottom / scaleY),\n left: round(rect.left / scaleX),\n x: round(rect.left / scaleX),\n y: round(rect.top / scaleY)\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n return {\n position: position,\n top: '0',\n left: '0',\n opacity: '0',\n pointerEvents: 'none'\n };\n};\n\nvar disabledApplyStylesModifier = {\n name: 'applyStyles',\n enabled: false\n}; // until docjs supports type exports...\n\nvar ariaDescribedByModifier = {\n name: 'ariaDescribedBy',\n enabled: true,\n phase: 'afterWrite',\n effect: function effect(_ref) {\n var state = _ref.state;\n return function () {\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper;\n\n if ('removeAttribute' in reference) {\n var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n return id.trim() !== popper.id;\n });\n if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n }\n };\n },\n fn: function fn(_ref2) {\n var _popper$getAttribute;\n\n var state = _ref2.state;\n var _state$elements2 = state.elements,\n popper = _state$elements2.popper,\n reference = _state$elements2.reference;\n var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n var ids = reference.getAttribute('aria-describedby');\n\n if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n return;\n }\n\n reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n }\n }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object} options\n * @param {object=} options.modifiers Popper.js modifiers\n * @param {boolean=} options.enabled toggle the popper functionality on/off\n * @param {string=} options.placement The popper element placement relative to the reference element\n * @param {string=} options.strategy the positioning strategy\n * @param {boolean=} options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=} options.onCreate called when the popper is created\n * @param {function=} options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$enabled = _ref3.enabled,\n enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n _ref3$placement = _ref3.placement,\n placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n _ref3$strategy = _ref3.strategy,\n strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n _ref3$modifiers = _ref3.modifiers,\n modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n var popperInstanceRef = useRef();\n var update = useCallback(function () {\n var _popperInstanceRef$cu;\n\n (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n }, []);\n var forceUpdate = useCallback(function () {\n var _popperInstanceRef$cu2;\n\n (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n }, []);\n\n var _useSafeState = useSafeState(useState({\n placement: placement,\n update: update,\n forceUpdate: forceUpdate,\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy),\n arrow: {}\n }\n })),\n popperState = _useSafeState[0],\n setState = _useSafeState[1];\n\n var updateModifier = useMemo(function () {\n return {\n name: 'updateStateModifier',\n enabled: true,\n phase: 'write',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var state = _ref4.state;\n var styles = {};\n var attributes = {};\n Object.keys(state.elements).forEach(function (element) {\n styles[element] = state.styles[element];\n attributes[element] = state.attributes[element];\n });\n setState({\n state: state,\n styles: styles,\n attributes: attributes,\n update: update,\n forceUpdate: forceUpdate,\n placement: state.placement\n });\n }\n };\n }, [update, forceUpdate, setState]);\n useEffect(function () {\n if (!popperInstanceRef.current || !enabled) return;\n popperInstanceRef.current.setOptions({\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n }); // intentionally NOT re-running on new modifiers\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [strategy, placement, updateModifier, enabled]);\n useEffect(function () {\n if (!enabled || referenceElement == null || popperElement == null) {\n return undefined;\n }\n\n popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n }));\n return function () {\n if (popperInstanceRef.current != null) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = undefined;\n setState(function (s) {\n return _extends({}, s, {\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy)\n }\n });\n });\n }\n }; // This is only run once to _create_ the popper\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, referenceElement, popperElement]);\n return popperState;\n}\n\nexport default usePopper;","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n var result = {};\n\n if (!Array.isArray(modifiers)) {\n return modifiers || result;\n } // eslint-disable-next-line no-unused-expressions\n\n\n modifiers == null ? void 0 : modifiers.forEach(function (m) {\n result[m.name] = m;\n });\n return result;\n}\nexport function toModifierArray(map) {\n if (map === void 0) {\n map = {};\n }\n\n if (Array.isArray(map)) return map;\n return Object.keys(map).map(function (k) {\n map[k].name = k;\n return map[k];\n });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n var enabled = _ref.enabled,\n enableEvents = _ref.enableEvents,\n placement = _ref.placement,\n flip = _ref.flip,\n offset = _ref.offset,\n fixed = _ref.fixed,\n containerPadding = _ref.containerPadding,\n arrowElement = _ref.arrowElement,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n var modifiers = toModifierMap(popperConfig.modifiers);\n return _extends({}, popperConfig, {\n placement: placement,\n enabled: enabled,\n strategy: fixed ? 'fixed' : popperConfig.strategy,\n modifiers: toModifierArray(_extends({}, modifiers, {\n eventListeners: {\n enabled: enableEvents\n },\n preventOverflow: _extends({}, modifiers.preventOverflow, {\n options: containerPadding ? _extends({\n padding: containerPadding\n }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n }),\n offset: {\n options: _extends({\n offset: offset\n }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n },\n arrow: _extends({}, modifiers.arrow, {\n enabled: !!arrowElement,\n options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n element: arrowElement\n })\n }),\n flip: _extends({\n enabled: !!flip\n }, modifiers.flip)\n }))\n });\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n if (options === void 0) {\n options = {};\n }\n\n var context = useContext(DropdownContext);\n\n var _useCallbackRef = useCallbackRef(),\n arrowElement = _useCallbackRef[0],\n attachArrowRef = _useCallbackRef[1];\n\n var hasShownRef = useRef(false);\n var _options = options,\n flip = _options.flip,\n offset = _options.offset,\n rootCloseEvent = _options.rootCloseEvent,\n _options$fixed = _options.fixed,\n fixed = _options$fixed === void 0 ? false : _options$fixed,\n _options$popperConfig = _options.popperConfig,\n popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n _options$usePopper = _options.usePopper,\n shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n var show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n var handleClose = function handleClose(e) {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n var _ref = context || {},\n drop = _ref.drop,\n setMenu = _ref.setMenu,\n menuElement = _ref.menuElement,\n toggleElement = _ref.toggleElement;\n\n var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n var popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enabled: !!(shouldUsePopper && show),\n enableEvents: show,\n offset: offset,\n flip: flip,\n fixed: fixed,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n }));\n\n var menuProps = _extends({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n\n var metadata = {\n show: show,\n alignEnd: alignEnd,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? _extends({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useRootClose(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Menu element. The `props`\n * argument should spread through to **a component that can accept a ref**.\n *\n * @type {Function ({\n * show: boolean,\n * alignEnd: boolean,\n * close: (?SyntheticEvent) => void,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Controls the visible state of the menu, generally this is\n * provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n show: PropTypes.bool,\n\n /**\n * Aligns the dropdown menu to the 'end' of it's placement position.\n * Generally this is provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n usePopper: PropTypes.oneOf([true, false]),\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Override the default event used by RootCloseWrapper.\n */\n rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n var children = _ref2.children,\n options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n var _useDropdownMenu = useDropdownMenu(options),\n props = _useDropdownMenu[0],\n meta = _useDropdownMenu[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, meta.hasShown ? children(props, meta) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext, useCallback } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n var _ref = useContext(DropdownContext) || {},\n _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$toggle = _ref.toggle,\n toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n setToggle = _ref.setToggle;\n\n var handleClick = useCallback(function (e) {\n toggle(!show, e);\n }, [show, toggle]);\n return [{\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-haspopup': true,\n 'aria-expanded': !!show\n }, {\n show: show,\n toggle: toggle\n }];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Toggle element. The `props`\n * argument should spread through to **a component that can accept a ref**. Use\n * the `onToggle` argument to toggle the menu open or closed\n *\n * @type {Function ({\n * show: boolean,\n * toggle: (show: boolean) => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * aria-haspopup: true\n * aria-expanded: boolean\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n var children = _ref2.children;\n\n var _useDropdownToggle = useDropdownToggle(),\n props = _useDropdownToggle[0],\n meta = _useDropdownToggle[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children(props, meta));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useGlobalListener from '@restart/hooks/useGlobalListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n /**\n * A render prop that returns the root dropdown element. The `props`\n * argument should spread through to an element containing _both_ the\n * menu and toggle in order to handle keyboard events for focus management.\n *\n * @type {Function ({\n * props: {\n * onKeyDown: (SyntheticEvent) => void,\n * },\n * }) => React.Element}\n */\n children: PropTypes.node,\n\n /**\n * Determines the direction and location of the Menu in relation to it's Toggle.\n */\n drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n /**\n * Controls the focus behavior for when the Dropdown is opened. Set to\n * `true` to always focus the first menu item, `keyboard` to focus only when\n * navigating via the keyboard, or `false` to disable completely\n *\n * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n */\n focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n /**\n * A css slector string that will return __focusable__ menu items.\n * Selectors should be relative to the menu component:\n * e.g. ` > li:not('.disabled')`\n */\n itemSelector: PropTypes.string,\n\n /**\n * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Whether or not the Dropdown is visible.\n *\n * @controllable onToggle\n */\n show: PropTypes.bool,\n\n /**\n * Sets the initial show position of the Dropdown.\n */\n defaultShow: PropTypes.bool,\n\n /**\n * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n *\n * ```ts static\n * function(\n * isOpen: boolean,\n * event: SyntheticEvent,\n * ): void\n * ```\n *\n * @controllable show\n */\n onToggle: PropTypes.func\n};\n\nfunction useRefWithUpdate() {\n var forceUpdate = useForceUpdate();\n var ref = useRef(null);\n var attachRef = useCallback(function (element) {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown(_ref) {\n var drop = _ref.drop,\n alignEnd = _ref.alignEnd,\n defaultShow = _ref.defaultShow,\n rawShow = _ref.show,\n rawOnToggle = _ref.onToggle,\n _ref$itemSelector = _ref.itemSelector,\n itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n children = _ref.children;\n\n var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n show = _useUncontrolledProp[0],\n onToggle = _useUncontrolledProp[1]; // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n\n var _useRefWithUpdate = useRefWithUpdate(),\n menuRef = _useRefWithUpdate[0],\n setMenu = _useRefWithUpdate[1];\n\n var menuElement = menuRef.current;\n\n var _useRefWithUpdate2 = useRefWithUpdate(),\n toggleRef = _useRefWithUpdate2[0],\n setToggle = _useRefWithUpdate2[1];\n\n var toggleElement = toggleRef.current;\n var lastShow = usePrevious(show);\n var lastSourceEvent = useRef(null);\n var focusInDropdown = useRef(false);\n var toggle = useCallback(function (nextShow, event) {\n onToggle(nextShow, event);\n }, [onToggle]);\n var context = useMemo(function () {\n return {\n toggle: toggle,\n drop: drop,\n show: show,\n alignEnd: alignEnd,\n menuElement: menuElement,\n toggleElement: toggleElement,\n setMenu: setMenu,\n setToggle: setToggle\n };\n }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(document.activeElement);\n }\n\n var focusToggle = useEventCallback(function () {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n var maybeFocusFirst = useEventCallback(function () {\n var type = lastSourceEvent.current;\n var focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n var first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(function () {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(function () {\n lastSourceEvent.current = null;\n });\n\n var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n if (!menuRef.current) return null;\n var items = qsa(menuRef.current, itemSelector);\n var index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useGlobalListener('keydown', function (event) {\n var _menuRef$current, _toggleRef$current;\n\n var key = event.key;\n var target = event.target;\n var fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n var fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n var isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu)) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (!menuRef.current && key === 'Tab') {\n return;\n }\n\n lastSourceEvent.current = event.type;\n\n switch (key) {\n case 'ArrowUp':\n {\n var next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, event);\n } else {\n var _next = getNextFocusedChild(target, 1);\n\n if (_next && _next.focus) _next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(document, 'keyup', function (e) {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, event);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n onToggle(false, event);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: context\n }, children);\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are stricting equal to the last state value\n var _useReducer = useReducer(function (state) {\n return !state;\n }, false),\n dispatch = _useReducer[1];\n\n return dispatch;\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext({});\nDropdownContext.displayName = 'DropdownContext';\nexport default DropdownContext;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n as: SafeAnchor,\n disabled: false\n};\nconst DropdownItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n eventKey,\n disabled,\n href,\n onClick,\n onSelect,\n active: propActive,\n as: Component,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n const onSelectCtx = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const {\n activeKey\n } = navContext || {};\n const key = makeEventKey(eventKey, href);\n const active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n const handleClick = useEventCallback(event => {\n // SafeAnchor handles the disabled case, but we handle it here\n // for other components\n if (disabled) return;\n onClick == null ? void 0 : onClick(event);\n onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n onSelect == null ? void 0 : onSelect(key, event);\n });\n return (\n /*#__PURE__*/\n // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n // @ts-ignore\n _jsx(Component, { ...props,\n ref: ref,\n href: href,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n onClick: handleClick\n })\n );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n const warningRef = useCallback(refValue => {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${componentName} injected a ref to a provided \\`as\\` component that resolved to a component instance instead of a DOM element. ` + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport DropdownContext from './DropdownContext';\nimport InputGroupContext from './InputGroupContext';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n flip: true\n};\nconst DropdownMenu = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n align,\n rootCloseEvent,\n flip,\n show: showProps,\n renderOnMount,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n popperConfig,\n variant,\n ...props\n}, ref) => {\n let alignRight = false;\n const isNavbar = useContext(NavbarContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n const {\n align: contextAlign\n } = useContext(DropdownContext);\n align = align || contextAlign;\n const isInputGroup = useContext(InputGroupContext);\n const alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n const keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n const brkPoint = keys[0];\n const direction = align[brkPoint]; // .dropdown-menu-end is required for responsively aligning\n // left in addition to align left classes.\n // Reuse alignRight to toggle the class below.\n\n alignRight = direction === 'start';\n alignClasses.push(`${prefix}-${brkPoint}-${direction}`);\n }\n } else if (align === 'end') {\n alignRight = true;\n }\n }\n\n const [menuProps, {\n hasShown,\n popper,\n show,\n alignEnd,\n toggle\n }] = useDropdownMenu({\n flip,\n rootCloseEvent,\n show: showProps,\n alignEnd: alignRight,\n usePopper: !isNavbar && alignClasses.length === 0,\n offset: [0, 2],\n popperConfig\n });\n menuProps.ref = useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref);\n if (!hasShown && !renderOnMount && !isInputGroup) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = () => toggle == null ? void 0 : toggle(false);\n\n menuProps.align = align;\n }\n\n let style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = { ...props.style,\n ...menuProps.style\n };\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...menuProps,\n style: style // Bootstrap css requires this data attrib to style responsive menus.\n ,\n ...((alignClasses.length || isNavbar) && {\n 'data-bs-popper': 'static'\n }),\n className: classNames(className, prefix, show && 'show', alignEnd && `${prefix}-end`, variant && `${prefix}-${variant}`, ...alignClasses)\n });\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport DropdownContext from 'react-overlays/DropdownContext';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n split,\n className,\n childBsPrefix,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = Button,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n const dropdownContext = useContext(DropdownContext);\n const isInputGroup = useContext(InputGroupContext);\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n const [toggleProps] = useDropdownToggle();\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/_jsx(Component, {\n className: classNames(className, prefix, split && `${prefix}-split`, !!isInputGroup && (dropdownContext == null ? void 0 : dropdownContext.show) && 'show'),\n ...toggleProps,\n ...props\n });\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nconst DropdownDivider = createWithBsPrefix('dropdown-divider', {\n Component: 'hr',\n defaultProps: {\n role: 'separator'\n }\n});\nconst DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nconst defaultProps = {\n navbar: false,\n align: 'start',\n autoClose: true\n};\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n const {\n bsPrefix,\n drop,\n show,\n className,\n align,\n onSelect,\n onToggle,\n focusFirstItemOnShow,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n navbar: _4,\n autoClose,\n ...props\n } = useUncontrolled(pProps, {\n show: 'onToggle'\n });\n const onSelectCtx = useContext(SelectableContext);\n const isInputGroup = useContext(InputGroupContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n\n const isClosingPermitted = source => {\n // autoClose=false only permits close on button click\n if (autoClose === false) return source === 'click'; // autoClose=inside doesn't permit close on rootClose\n\n if (autoClose === 'inside') return source !== 'rootClose'; // autoClose=outside doesn't permit close on select\n\n if (autoClose === 'outside') return source !== 'select';\n return true;\n };\n\n const handleToggle = useEventCallback((nextShow, event, source = event.type) => {\n if (event.currentTarget === document && (source !== 'keydown' || event.key === 'Escape')) source = 'rootClose';\n if (isClosingPermitted(source)) onToggle == null ? void 0 : onToggle(nextShow, event, {\n source\n });\n });\n const handleSelect = useEventCallback((key, event) => {\n onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n onSelect == null ? void 0 : onSelect(key, event);\n handleToggle(false, event, 'select');\n }); // TODO RTL: Flip directions based on RTL setting.\n\n let direction = drop;\n\n if (drop === 'start') {\n direction = 'left';\n } else if (drop === 'end') {\n direction = 'right';\n }\n\n const contextValue = useMemo(() => ({\n align\n }), [align]);\n return /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(BaseDropdown, {\n drop: direction,\n show: show,\n alignEnd: align === 'end',\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: `.${prefix}-item:not(.disabled):not(:disabled)`,\n children: isInputGroup ? props.children : /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'end' && 'dropend', drop === 'start' && 'dropstart')\n })\n })\n })\n });\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nexport default Object.assign(Dropdown, {\n Toggle: DropdownToggle,\n Menu: DropdownMenu,\n Item: DropdownItem,\n ItemText: DropdownItemText,\n Divider: DropdownDivider,\n Header: DropdownHeader\n});","import React, {useEffect, useState} from 'react';\r\nimport AccordionSidebar from \"./Dropdowns\";\r\nimport {Container, Dropdown} from \"react-bootstrap\"\r\nimport \"./styles.css\"\r\nimport {getUserInfo} from \"../../../pages/shared/functions/pocketbase\";\r\n\r\n\r\n\r\n\r\n\r\nconst Sidebar = () => {\r\n const [dropdownTitle, setDropdownTitle] = useState('Pick a Phishing Link');\r\n const [user, setUser] = useState(null);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n const userInfo = await getUserInfo();\r\n setUser(userInfo);\r\n }\r\n\r\n fetchData();\r\n }, []);\r\n const handleSelect = async (e) => {\r\n try {\r\n await navigator.clipboard.writeText(e);\r\n setDropdownTitle('Copied!');\r\n setTimeout(() => {\r\n setDropdownTitle('Pick a Phishing Link');\r\n }, 3000); // Change back after 3 seconds\r\n } catch (err) {\r\n alert('Failed to copy link');\r\n }\r\n }\r\n return (\r\n <Container fluid className=\"d-flex flex-column\"\r\n style={{height: \"100%\", overflowY: \"auto\", scrollbarWidth: \"none\", msOverflowStyle: \"none\"}}>\r\n\r\n\r\n <AccordionSidebar user={user}/>\r\n <div style={{textDecoration: \"none\", marginTop: \"auto\"}}>\r\n <Dropdown onSelect={handleSelect} style={{alignSelf: \"center\", width: \"100%\"}}>\r\n <Dropdown.Toggle variant=\"soft-secondary\" id=\"dropdown-basic\">\r\n {dropdownTitle}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n <Dropdown.Item eventKey={\"https://\" + window.location.hostname + \"/help\"}>/help</Dropdown.Item>\r\n <Dropdown.Item\r\n eventKey={\"https://\" + window.location.hostname + \"/support\"}>/support</Dropdown.Item>\r\n <Dropdown.Item\r\n eventKey={\"https://\" + window.location.hostname + \"/verify\"}>/verify</Dropdown.Item>\r\n <Dropdown.Item\r\n eventKey={\"https://\" + window.location.hostname + \"/reset-password\"}>/reset-password</Dropdown.Item>\r\n <Dropdown.Item\r\n eventKey={\"https://\" + window.location.hostname + \"/ticket\"}>/ticket</Dropdown.Item>\r\n <Dropdown.Item\r\n eventKey={\"https://\" + window.location.hostname + \"/ticket?#153937\"}>/ticket?#153937</Dropdown.Item>\r\n\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n </Container>\r\n );\r\n};\r\n\r\n\r\nexport default Sidebar;\r\n","import DefaultLayout from './default';\nimport BlankLayout from './blank';\nimport ConnectLayout from './connect';\n\nconst layouts = {\n default: DefaultLayout,\n connect: ConnectLayout,\n blank: BlankLayout,\n};\n\nexport default layouts;\n","import React from \"react\";\nimport { Link } from 'react-router-dom';\nimport { Navbar } from \"react-bootstrap\";\nimport { MdMenu } from \"react-icons/md\";\nimport Sidebar from \"./Sidebar/Admin/Sidebar\"\nimport {Layout, ThemeSwitch} from \"../@dlex/components\";\n\nconst Default = ({children}) => {\n return (\n\n <Layout>\n <Layout.Header>\n {/* Top Navbar */}\n <Navbar variant=\"theming\" expand=\"lg\">\n <div className=\"container-fluid gx-4\">\n <div className=\"navbar-content-first\">\n <Navbar.Toggle className={\"sn-trigger btn-icon btn-subtle-light rounded-circle me-3\"}>\n <MdMenu size={24} className={\"icon\"} />\n </Navbar.Toggle>\n\n\n <Link to=\"/\" className=\"navbar-brand me-0\">\n <span className=\"ms-2\" style={{fontSize:\"20px\"}}><b>PLTG</b> <b style={{color:\"var(--primary)\"}}>Panel</b></span>\n </Link>\n\n </div>\n <div className=\"navbar-content-last\">\n <ThemeSwitch />\n </div>\n </div>\n </Navbar>\n </Layout.Header>\n {/* Main Content */}\n <Layout.Body id={\"main-content\"}>\n {children}\n </Layout.Body>\n {/* Side Navigation */}\n <Layout.Nav className={\"bg-base-1\"} drawerBreakpoint={992} compact={false} compactAutoExpandOnHover={false}>\n <Layout.Nav.Body>\n <Sidebar />\n </Layout.Nav.Body>\n </Layout.Nav>\n </Layout>\n )\n}\n\nexport default Default;\n","import { Route, Redirect } from 'react-router-dom';\r\nimport PocketBase from \"pocketbase\";\r\n\r\n\r\n\r\n\r\nconst PrivateRoute = ({component: Component, ...rest}) => {\r\n const pb = new PocketBase(window.location.protocol + '//' + window.location.hostname);\r\n const isAuthenticated = pb.authStore.isValid;\r\n return (\r\n <Route {...rest} render={props => (\r\n isAuthenticated ?\r\n <Component {...props} />\r\n : <Redirect to=\"/\" />\r\n )} />\r\n );\r\n};\r\n\r\nexport default PrivateRoute","import React, {useEffect} from \"react\";\nimport {BrowserRouter as Router, Route, Switch, useLocation} from \"react-router-dom\";\nimport routes from './routes';\nimport layouts from './layouts';\nimport PrivateRoute from \"./wrappers/PrivateRoute\"\nimport {QueryClient, QueryClientProvider} from 'react-query';\nimport {ToastContainer} from \"react-toastify\";\n\n\nconst groupBy = function (xs, key) {\n return xs.reduce(function (rv, x) {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n};\n\nconst queryClient = new QueryClient();\n\n\n// Check if main content exists, then scroll to top on mount.\nconst ScrollToTop = ({children}) => {\n let location = useLocation();\n\n useEffect(() => {\n const mainContent = document.getElementById('main-content');\n\n if (mainContent) {\n mainContent.scrollTo(0, 0);\n }\n }, [location])\n\n return children;\n}\n\n\n\n\nfunction App() {\n\n useEffect(() => {\n //document.title = 'Dlex React Nile Dashboard';\n }, [])\n\n\n\n const routesWithLayouts = routes.map(route => {\n // define default layout\n if (!route.layout) {\n route.layout = 'default';\n }\n if (route.title) {\n document.title = route.title;\n }\n return route;\n });\n const routesGroupedByLayouts = groupBy(routesWithLayouts, 'layout');\n\n return (\n <Router>\n <Switch>\n {Object.keys(routesGroupedByLayouts).map(layoutName => {\n const LayoutTag = layouts[layoutName];\n const layoutRoutes = routesGroupedByLayouts[layoutName].map(route => route.path);\n\n return (\n <Route key={`layout-${layoutName}`} exact={true} path={layoutRoutes}>\n <QueryClientProvider client={queryClient}>\n <ScrollToTop>\n <LayoutTag>\n <ToastContainer />\n\n <Switch>\n {routesGroupedByLayouts[layoutName].map(route => {\n const RouteType = route.requiresAuth ? PrivateRoute : Route;\n\n return (\n <RouteType\n key={route.path}\n path={route.path}\n exact={route.exact === true}\n component={route.component}\n />\n );\n })}\n </Switch>\n </LayoutTag>\n </ScrollToTop>\n </QueryClientProvider>\n </Route>\n );\n })}\n </Switch>\n </Router>\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './assets/styles/main.scss';\nimport App from './App';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(<App />);"],"names":["configFile","initConfig","useConfig","config","setConfig","useState","useEffect","response","fetch","json","e","console","log","getUserInfo","async","pb","PocketBase","window","location","protocol","hostname","userModel","authStore","model","userRecord","collection","getFirstListItem","concat","id","username","categories","trusted","Trusted","href","error","register","password","data","create","write_log","cat","site","isAllowedToDomain","userdata","domain","getFullList","filter","length","some","item","Owner","includes","isUsernameTaken","userList","limit","status","setDomainOwner","user","data2","value","ref","useRef","current","useEventCallback","fn","useCommittedRef","useCallback","apply","arguments","toFnRef","refA","refB","useMemo","a","b","mergeRefs","useMounted","mounted","isMounted","useWillUnmount","onUnmount","valueRef","useUpdatedRef","hasOwn","hasOwnProperty","classNames","classes","i","arg","argType","push","Array","isArray","inner","toString","Object","prototype","key","call","join","module","exports","default","optionsSupported","onceSupported","options","passive","once","canUseDOM","addEventListener","removeEventListener","node","eventName","handler","capture","wrappedHandler","__once","onceHandler","event","this","document","createElement","getComputedStyle","psuedoElement","doc","ownerDocument","defaultView","ownerWindow","rUpper","msPattern","hyphenateStyleName","string","replace","toLowerCase","hyphenate","supportedTransforms","property","css","transforms","style","getPropertyValue","keys","forEach","test","isTransform","removeProperty","cssText","emulateTransitionEnd","element","duration","padding","called","handle","setTimeout","bubbles","cancelable","createEvent","initEvent","dispatchEvent","triggerEvent","remove","listen","clearTimeout","transitionEnd","str","mult","indexOf","parseFloat","parseDuration","removeEmulate","isAbsolute","pathname","charAt","spliceOne","list","index","k","n","pop","to","from","undefined","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","result","substr","valueOf","obj","valueEqual","every","aValue","bValue","assign","addLeadingSlash","path","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","slice","createPath","search","hash","createLocation","state","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","isActive","listener","notifyListeners","_len","args","_key","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","props","invariant","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","splice","canGo","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","condition","format","c","d","f","Error","argIndex","framesToPop","validator","propName","componentName","propFullName","componentNameSafe","propFullNameSafe","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","err","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","Button","React","bsPrefix","variant","size","active","className","as","useBootstrapPrefix","_jsx","SafeAnchor","disabled","Component","onClick","CloseButton","Container","fluid","suffix","fadeStyles","ENTERING","ENTERED","Fade","children","handleEnter","triggerBrowserReflow","onEnter","TransitionWrapper","addEndListener","transitionEndListener","childRef","innerProps","in","timeout","mountOnEnter","unmountOnExit","appear","tooltip","Feedback","FloatingLabel","controlId","label","_jsxs","FormGroup","htmlFor","FormCheckLabel","useContext","FormContext","FormCheck","bsSwitchPrefix","inline","isValid","isInvalid","feedbackTooltip","feedback","title","innerFormContext","hasLabel","input","FormCheckInput","Provider","_Fragment","Input","Label","createWithBsPrefix","DEVICE_SIZES","Col","spans","brkPoint","propValue","span","offset","order","infix","FormLabel","column","visuallyHidden","columnClass","FormRange","FormSelect","htmlSize","FormText","muted","Switch","validated","Form","Group","Control","FormControl","Floating","FormFloating","Check","Text","Range","Select","plaintext","readOnly","context","InputGroupText","InputGroup","hasValidation","contextValue","InputGroupContext","Radio","Checkbox","isTrivialHref","trim","onKeyDown","handleClick","preventDefault","stopPropagation","role","tabIndex","createChainedFunction","ThemeContext","prefixes","Consumer","defaultPrefix","onEntering","onEntered","onExit","onExiting","onExited","nodeRef","mergedRef","useMergedRefs","attachRef","r","safeFindDOMNode","normalize","param","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","Transition","funcs","reduce","acc","_len2","_key2","rHyphen","pascalCase","toUpperCase","_","chr","BsComponent","Tag","resolvedPrefix","p","delay","target","offsetHeight","aa","ba","ca","usingClientEntryPoint","Events","Dispatcher","t","encodeURIComponent","D","da","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ea","ReactCurrentDispatcher","fa","pending","method","ia","ja","ka","E","F","la","Symbol","for","ma","na","oa","pa","qa","ra","sa","ta","va","wa","xa","ya","za","Aa","Ba","Ca","iterator","Da","Ea","Fa","Ga","Ha","Ia","$$typeof","_currentValue","_currentValue2","_threadCount","Ja","nodeType","documentElement","namespaceURI","Ka","parentNode","tagName","La","Ma","Na","memoizedState","Oa","Pa","unstable_scheduleCallback","Qa","unstable_cancelCallback","Ra","unstable_shouldYield","Sa","unstable_requestPaint","Ta","unstable_now","Ua","unstable_getCurrentPriorityLevel","Va","unstable_ImmediatePriority","Wa","unstable_UserBlockingPriority","Xa","unstable_NormalPriority","Ya","unstable_LowPriority","Za","unstable_IdlePriority","$a","ab","unstable_setDisableYieldValue","bb","cb","eb","setStrictMode","gb","clz32","hb","ib","LN2","jb","kb","lb","mb","pendingLanes","suspendedLanes","pingedLanes","nb","ob","errorRecoveryDisabledLanes","qb","rb","tb","entangledLanes","entanglements","ub","G","xb","yb","zb","Ab","Bb","Cb","Db","Fb","Gb","Hb","Ib","Jb","Kb","alternate","child","Lb","Mb","tag","Nb","stateNode","Ob","Pb","hoistableStyles","Map","hoistableScripts","Qb","Rb","Set","Sb","Tb","Ub","add","cc","Vb","Wb","RegExp","Xb","Yb","$b","Zb","removeAttribute","setAttribute","ac","bc","setAttributeNS","dc","stack","match","ec","fc","prepareStackTrace","DetermineComponentFrameRoot","w","set","Reflect","construct","q","catch","configurable","g","h","u","gc","hc","return","ic","jc","_context","_payload","_init","kc","lc","mc","nodeName","oc","_valueTracker","constructor","get","enumerable","getValue","setValue","stopTracking","nc","pc","checked","qc","activeElement","body","rc","sc","charCodeAt","tc","uc","defaultChecked","vc","defaultValue","Ac","wc","xc","selected","defaultSelected","yc","zc","textContent","Bc","innerHTML","firstChild","removeChild","appendChild","Cc","MSApp","execUnsafeLocalFunction","Dc","Ec","lastChild","nodeValue","Fc","Gc","setProperty","cssFloat","has","Hc","Ic","Jc","Kc","Lc","srcElement","correspondingUseElement","Mc","Nc","Oc","querySelectorAll","form","multiple","Pc","Qc","Rc","flags","Sc","dehydrated","Tc","Vc","sibling","Uc","Wc","Xc","Yc","Zc","$c","ad","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","bd","cd","dd","ed","getChildContext","fd","__reactInternalMemoizedMergedChildContext","gd","is","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","H","I","K","wd","xd","yd","zd","deletions","Ad","Bd","hasAttribute","rel","crossOrigin","src","Hd","Cd","pendingProps","Dd","Ed","Fd","Gd","overflow","treeContext","retryLane","Id","mode","Jd","Kd","Ld","Md","memoizedProps","Nd","nextSibling","Od","Pd","Qd","Rd","Sd","Td","next","Ud","Vd","lanes","Wd","Xd","Yd","childLanes","_visibility","hiddenUpdates","lane","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","L","M","N","je","ke","le","me","ne","oe","pe","finishedWork","finishedLanes","qe","re","se","te","AggregateError","ue","bind","ve","we","expirationTimes","expiredLanes","callbackNode","O","cancelPendingCommit","callbackPriority","xe","ye","ze","Ae","Be","Ce","De","Fe","He","Ie","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","Je","Ke","payload","Le","Me","Ne","Oe","Pe","Qe","y","C","T","Re","Se","Te","Ue","Ve","We","Xe","then","Ye","Ze","$e","reason","shellSuspendCounter","af","bf","cf","df","ef","ff","_owner","_stringRef","refs","gf","hf","jf","m","l","kf","v","lf","x","mf","containerInfo","implementation","nf","of","pf","z","A","B","ha","J","delete","Eb","done","an","qf","rf","sf","tf","uf","vf","baseLanes","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","revealOrder","fg","Gf","Hf","ReactCurrentBatchConfig","If","P","Q","R","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","queue","dg","baseQueue","eg","gg","hg","String","ig","jg","kg","lastRenderedReducer","revertLane","hasEagerState","eagerState","lg","lastRenderedState","dispatch","mg","ng","og","pg","getSnapshot","qg","rg","destroy","sg","stores","tg","ug","vg","wg","xg","yg","zg","Ag","transition","_callbacks","Bg","Cg","Dg","Eg","Fg","inst","deps","lastEffect","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ge","Ug","Vg","Wg","Xg","Yg","Zg","$g","cache","ah","bh","ch","dh","eh","events","readContext","use","useImperativeHandle","useInsertionEffect","useLayoutEffect","useReducer","useDebugValue","useDeferredValue","useTransition","useSyncExternalStore","useId","useCacheRefresh","useHostTransitionStatus","useFormState","useOptimistic","identifierPrefix","formState","fh","gh","hh","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","ih","shouldComponentUpdate","isPureReactComponent","jh","updater","kh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","lh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","mh","WeakMap","nh","source","digest","oh","ph","qh","rh","sh","th","componentDidCatch","uh","componentStack","vh","Ah","ReactCurrentOwner","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","_pendingVisibility","Lh","Mh","cachePool","Nh","Oh","parent","U","pool","Ph","Qh","Rh","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","Sh","Th","pendingContext","Uh","Vh","Wh","Xh","Yh","Zh","fallback","$h","ai","ci","dataset","dgst","xh","di","_reactRetry","bi","subtreeFlags","ei","fi","gi","isBackwards","rendering","renderingStartTime","tail","tailMode","hi","dependencies","ki","li","mi","ni","oi","ji","pi","qi","firstContext","ri","memoizedValue","si","AbortController","signal","aborted","abort","ti","ui","controller","refCount","vi","wi","xi","Ee","yi","pooledCache","zi","Ai","Bi","loading","Ci","Di","Ei","V","Fi","isDehydrated","Gi","Hi","Ii","Ji","createElementNS","Ki","autoFocus","Li","suppressHydrationWarning","createTextNode","Mi","S","Ni","Oi","retryQueue","Pi","Qi","Ri","onError","Si","Ti","Ui","Vi","Wi","Xi","Zi","$i","aj","WeakSet","bj","cj","refCleanup","W","dj","ej","fj","nj","oj","pj","qj","rj","focus","sj","tj","__reactInternalSnapshotBeforeUpdate","uj","vj","wj","xj","yj","zj","insertBefore","_reactRootContainer","onclick","Aj","Bj","Cj","Dj","Ej","Fj","onCommitFiberUnmount","count","attributes","removeAttributeNode","Gj","Hj","componentWillUnmount","Jj","_retryCache","Ij","Kj","Lj","Mj","Nj","Oj","getElementsByTagName","head","Pj","content","httpEquiv","charSet","Qj","Rj","Sj","Tj","Uj","Vj","_current","Wj","display","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","Lk","media","matchMedia","matches","instance","Bo","Do","_p","Ko","Jo","qo","Fo","Promise","onload","onerror","stylesheets","preload","hk","ik","jk","kk","lk","mk","al","nk","getCacheSignal","getCacheForType","pk","qk","ReactCurrentCache","rk","sk","X","tk","uk","vk","wk","zh","xk","Infinity","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Tk","Uk","Vk","Yk","Zk","Qk","$k","Sk","Hk","Ik","timeoutHandle","Jk","Kk","unsuspend","Mk","Lo","Nk","Ok","Pk","Rk","Wk","Xk","yh","transitions","markerInstances","wh","sb","cl","hj","ij","kj","jj","start","selectionStart","end","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","lj","focusedElem","selectionRange","mj","gj","Cn","extend","Bn","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","dl","el","onCommitFiberRoot","db","onRecoverableError","bl","pooledCacheLanes","onPostCommitFiberRoot","fl","pingCache","gl","hl","kl","isReactComponent","itemProp","precedence","onLoad","ll","_pendingMarkers","_transitions","detach","attach","pendingChildren","ml","incompleteTransitions","nl","pl","ql","rl","sl","tl","vb","ul","vl","wl","ii","il","Io","integrity","hrefLang","referrerPolicy","Co","jl","yl","zl","Al","Bl","Cl","Dl","keyCode","charCode","El","Fl","Gl","_reactName","_targetInst","nativeEvent","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","Ll","Ml","Nl","Hl","eventPhase","timeStamp","Date","now","isTrusted","Il","Jl","view","detail","Kl","Pl","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","Ol","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Ql","Sl","dataTransfer","Ul","Wl","animationName","elapsedTime","pseudoElement","Yl","clipboardData","$l","am","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","bm","cm","Alt","Meta","Shift","dm","fm","fromCharCode","code","repeat","locale","which","hm","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","jm","touches","targetTouches","changedTouches","lm","propertyName","nm","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","pm","qm","rm","sm","tm","um","vm","wm","xm","ym","blockedOn","domEventName","eventSystemFlags","targetContainers","Am","wb","priority","Bm","Cm","shift","Dm","Em","Fm","Gm","Hm","Im","getRootNode","$$reactFormReplay","formAction","Jm","Km","Lm","Mm","Nm","Om","zm","Pm","Qm","Rm","Sm","Tm","Um","Vm","documentMode","Wm","Xm","Ym","Zm","$m","bn","cn","color","date","datetime","email","month","range","tel","text","time","week","gn","hn","jn","kn","ln","mn","nn","on","pn","qn","rn","sn","tn","oninput","un","detachEvent","vn","wn","attachEvent","xn","yn","zn","An","contains","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","Dn","En","Fn","Gn","Hn","In","Jn","Kn","animationend","animationiteration","animationstart","transitionend","Ln","Mn","Nn","animation","On","Pn","Qn","Rn","Sn","Tn","Un","Vn","Wn","Zn","$n","ao","Yi","Y","bo","co","eo","fo","parentWindow","ho","dn","char","en","submitter","FormData","om","io","jo","ko","Z","formEncType","formMethod","formTarget","encType","__html","isNaN","lo","dangerouslySetInnerHTML","mo","no","queueMicrotask","resolve","oo","po","onScroll","onScrollEnd","previousSibling","ro","zo","prefetchDNS","Ao","preconnect","imageSrcSet","imageSizes","Eo","preloadModule","preinitStyle","Go","preinitScript","Ho","preinitModuleScript","Mo","No","Oo","Po","reportError","Qo","_internalRoot","Ro","So","To","Uo","Wo","Vo","Xo","unmount","unstable_scheduleHydration","Yo","Zo","findFiberByHostInstance","bundleType","version","rendererPackageName","$o","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","ap","isDisabled","supportsFiber","inject","ol","unstable_strictMode","unstable_transitionCallbacks","flushSync","hydrate","fetchPriority","nonce","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","createRoot","hydrateRoot","checkDCE","DefaultContext","attr","IconContext","__assign","s","__rest","propertyIsEnumerable","Tree2Element","tree","GenIcon","IconBase","elem","conf","svgProps","computedSize","stroke","fill","strokeWidth","xmlns","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","componentOrElement","ReactDOM","focusManager","_Subscribable","FocusManager","_this","setup","onFocus","_window","isServer","_inheritsLoose","_proto","onSubscribe","cleanup","setEventListener","onUnsubscribe","_this$cleanup","hasListeners","_this$cleanup2","_this2","focused","setFocused","isFocused","visibilityState","Subscribable","logger","getLogger","setLogger","newLogger","Mutation","defaultOptions","mutationId","mutationCache","observers","getDefaultState","meta","addObserver","observer","removeObserver","cancel","retryer","promise","noop","continue","execute","restored","variables","onMutate","executeMutation","onSuccess","onSettled","_this$options$retry","Retryer","mutationFn","reject","onFail","onPause","onContinue","retry","retryDelay","_this3","failureCount","isPaused","reducer","notifyManager","batch","onMutationUpdate","notify","NotifyManager","transactions","notifyFn","batchNotifyFn","flush","schedule","scheduleMicrotask","batchCalls","setNotifyFunction","setBatchNotifyFunction","onlineManager","OnlineManager","onOnline","online","setOnline","isOnline","onLine","Query","abortSignalConsumed","hadObservers","setOptions","queryKey","queryHash","initialState","scheduleGc","_this$options$cacheTi","cacheTime","setDefaultOptions","clearGcTimeout","isValidTimeout","gcTimeout","optionalRemove","isFetching","setData","_this$options$isDataE","_this$options","prevData","functionalUpdate","isDataEqual","structuralSharing","replaceEqualDeep","dataUpdatedAt","updatedAt","setStateOptions","_this$retryer","silent","reset","enabled","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","_this$retryer2","find","shouldFetchOnWindowFocus","refetch","_this$retryer3","shouldFetchOnReconnect","query","isTransportCancelable","revert","cancelRetry","getObserversCount","invalidate","fetchOptions","_this$options$behavio","_context$fetchOptions","_abortController$abor","cancelRefetch","_this$retryer4","continueRetry","queryFn","ensureQueryKeyArray","abortController","getAbortController","queryFnContext","pageParam","_this$options$behavio2","_context$fetchOptions2","fetchFn","behavior","onFetch","revertState","fetchMeta","isCancelledError","onQueryUpdate","initialData","initialDataUpdatedAt","hasData","dataUpdateCount","errorUpdateCount","errorUpdatedAt","fetchFailureCount","_action$meta","_action$dataUpdatedAt","QueryCache","queries","queriesMap","build","client","_options$queryHash","hashQueryKeyByOptions","defaultQueryOptions","getQueryDefaults","queryInMap","clear","getAll","arg1","arg2","filters","parseFilterArgs","matchQuery","findAll","_this4","_this5","MutationCache","mutations","mutation","defaultMutationOptions","mutationKey","getMutationDefaults","matchMutation","resumePausedMutations","pausedMutations","getNextPageParam","pages","getPreviousPageParam","QueryClient","queryCache","queryDefaults","mutationDefaults","mount","unsubscribeFocus","subscribe","unsubscribeOnline","_this$unsubscribeFocu","_this$unsubscribeOnli","fetching","isMutating","getQueryData","_this$queryCache$find","getQueriesData","queryKeyOrFilters","getQueryCache","setQueryData","parsedOptions","parseQueryArgs","defaultedOptions","setQueriesData","_ref2","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","arg3","_parseFilterArgs3","refetchFilters","refetchQueries","cancelQueries","_parseFilterArgs4","_parseFilterArgs4$","cancelOptions","promises","all","invalidateQueries","_ref3","_filters$refetchActiv","_filters$refetchInact","_parseFilterArgs5","refetchActive","inactive","refetchInactive","_this6","_parseFilterArgs6","refetchPage","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","_context$fetchOptions3","_context$fetchOptions4","_context$state$data","_context$state$data2","fetchMore","isFetchingNextPage","direction","isFetchingPreviousPage","oldPages","oldPageParams","pageParams","abortSignal","newPageParams","cancelled","buildNewPages","page","previous","fetchPage","manual","queryFnResult","isCancelable","_manual","_param","shouldFetchFirstPage","_loop","_param2","finalPromise","prefetchInfiniteQuery","cancelMutations","_this7","getMutationCache","getDefaultOptions","setQueryDefaults","hashQueryKey","_this$queryDefaults$f","partialMatchKey","setMutationDefaults","_this$mutationDefault","_defaulted","defaultQueryObserverOptions","defaultRetryDelay","pow","CancelledError","cancelFn","continueFn","promiseResolve","promiseReject","isResolved","outerResolve","outerReject","run","promiseOrValue","_unused","_config$retry","_config$retryDelay","shouldRetry","sleep","continueResolve","isQueryKey","parseMutationArgs","predicate","stale","queryStatusFilter","mapQueryStatusFilter","queryKeyHashFn","asArray","JSON","stringify","val","isPlainObject","sort","partialDeepEqual","aSize","bItems","bSize","copy","equalItems","o","hasObjectPrototype","ctor","prot","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","useQueryClient","queryClient","QueryClientProvider","_ref$contextSharing","Context","MutationObserver","bindMethods","updateResult","mutate","_this$currentMutation","currentMutation","notifyOptions","currentResult","mutateOptions","isLoading","isSuccess","isError","isIdle","useMutation","mountedRef","forceUpdate","obsRef","unsubscribe","suspense","_useErrorBoundary","params","useErrorBoundary","mutateAsync","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","global","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","handlers","off","newValue","changedBits","createEventEmitter","nextProps","oldValue","_Component2","onUpdate","observedBits","_proto2","createNamedContext","createContext","historyContext","createNamedContext$1","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","prevProps","cacheLimit","cacheCount","generatePath","generator","pathToRegexp","compilePath","pretty","Redirect","computedMatch","_ref$push","self","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","strict","_options$strict","sensitive","_options$sensitive","matched","cacheKey","pathCache","regexp","compilePath$1","_compilePath","exec","values","memo","Route","context$1","_this$props","base","createURL","staticHandler","methodName","useHistory","useLocation","arr","isarray","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","delimiter","escaped","group","modifier","asterisk","partial","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","token","segment","TypeError","j","attachKeys","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","UNMOUNTED","EXITED","EXITING","_React$Component","initialStatus","isMounting","enter","appearStatus","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","childProps","_objectWithoutPropertiesLoose","TransitionGroupContext","only","jsx","jsxs","escape","_status","_result","Children","toArray","PureComponent","act","createFactory","createRef","forwardRef","lazy","startTransition","sortIndex","performance","setImmediate","startTime","expirationTime","scheduling","isInputPending","priorityLevel","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","defaultKey","_toPropertyKey","hint","prim","toPrimitive","Number","_toPrimitive","useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","rest","handlerName","_useUncontrolledProp","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","warning","_setPrototypeOf","setPrototypeOf","__proto__","subClass","superClass","excluded","sourceKeys","ClientResponseError","_this$response","_this$originalError","super","isAbort","originalError","DOMException","cause","toJSON","cookieSerialize","defaultEncode","maxAge","isFinite","expires","toUTCString","httpOnly","secure","sameSite","defaultDecode","decodeURIComponent","getTokenPayload","isTokenExpired","exp","atob","BaseAuthStore","baseToken","baseModel","_onChangeCallbacks","isAdmin","isAuthRecord","save","triggerChange","loadFromCookie","decode","cookieParse","exportToCookie","Blob","_r$model","_r$model2","onChange","LocalAuthStore","storageFallback","storageKey","_bindStorageEvent","_storageGet","_storageSet","_storageRemove","localStorage","getItem","_window2","setItem","_window3","_window$localStorage","removeItem","_window4","BaseService","SettingsService","send","update","testS3","filesystem","testEmail","template","generateAppleClientSecret","clientId","teamId","keyId","privateKey","CrudService","_getFullList","getList","perPage","baseCrudPath","_e$items","items","requestKey","skipTotal","_e$items2","getOne","buildUrl","request","normalizeLegacyOptionsArgs","warn","resetAutoRefresh","_e$_resetAutoRefresh","_resetAutoRefresh","AdminService","_this$client$authStor","_this$client$authStor2","collectionId","_this$client$authStor3","_this$client$authStor4","authResponse","admin","authWithPassword","identity","autoRefreshThreshold","autoRefresh","beforeSend","_o$query","sendOptions","headers","authRefresh","requestPasswordReset","confirmPasswordReset","passwordConfirm","normalizeUnknownQueryParams","RealtimeService","eventSource","subscriptions","lastSentSubscriptions","maxConnectTimeout","reconnectAttempts","maxReconnectAttempts","predefinedReconnectIntervals","pendingConnects","isConnected","_this$eventSource","submitSubscriptions","connect","unsubscribeByTopicAndListener","getSubscriptionsByTopic","hasSubscriptionListeners","_this$eventSource2","disconnect","unsubscribeByPrefix","startsWith","_this$eventSource3","_this$eventSource4","_this$subscriptions$e","_this$subscriptions$e2","addAllSubscriptionListeners","getNonEmptySubscriptionKeys","getSubscriptionsCancelKey","removeAllSubscriptionListeners","initConnect","connectTimeoutId","connectErrorHandler","EventSource","lastEventId","hasUnsentSubscriptions","reconnectTimeoutId","_this$eventSource5","cancelRequest","close","RecordService","collectionIdOrName","baseCollectionPath","realtime","_this$client$authStor5","_this$client$authStor6","_this$client$authStor7","collectionName","_this$client$authStor8","_this$client$authStor9","_this$client$authStor10","record","listAuthMethods","usernamePassword","emailPassword","authProviders","authWithOAuth2Code","provider","codeVerifier","redirectUrl","createData","authWithOAuth2","_r","urlCallback","openBrowserPopup","_t$scopes","scopes","scope","_replaceQueryParams","authUrl","requestVerification","confirmVerification","verified","requestEmailChange","newEmail","confirmEmailChange","listExternalAuths","unlinkExternalAuth","_window5","open","innerWidth","innerHeight","CollectionService","import","collections","deleteMissing","LogService","getStats","HealthService","check","FileService","getUrl","download","URLSearchParams","getToken","BackupService","upload","restore","getDownloadUrl","Client","cancelControllers","recordServices","enableAutoCancellation","baseUrl","lang","admins","files","logs","settings","health","backups","autoCancellation","cancelAllRequests","toISOString","replaceAll","getFileUrl","_window$location$orig","origin","endsWith","initSendOptions","_console","serializeQueryParams","getHeader","afterSend","convertToFormDataIfNeeded","$autoCancel","$cancelKey","isFormData","Authorization","hasBlobField","append","File","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","webpackQueues","webpackExports","webpackError","resolveQueue","hasAwait","currentDeps","depQueues","rej","dep","ret","wrapDeps","getResult","fnQueue","getter","__esModule","definition","chunkId","miniCssF","Function","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","charset","onScriptComplete","prev","doneFns","toStringTag","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","ex","isModifiedEvent","Link","_ref2$component","__RouterContext","forwardRefShim$1","forwardRef$1","NavLink","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","_assertThisInitialized","ReferenceError","LOADABLE_SHARED","initialChunks","STATUS_PENDING","STATUS_REJECTED","createLoadable","_ref$defaultResolveCo","defaultResolveComponent","_render","loadable","loadableConstructor","requireAsync","chunkName","resolveConstructor","_getCacheKey","Loadable","resolveComponent","EnhancedInnerLoadable","LoadableWithChunkExtractor","extractor","__chunkExtractor","withChunkExtractor","InnerLoadable","requireSync","ssr","loadSync","addChunk","isReady","cachedPromise","getCache","setCache","loadAsync","getCacheKey","triggerOnLoad","fileName","resolveAsync","loadedModule","_this$props2","propFallback","_this$state","load","_createLoadable","_createLoadable$1","loadable$1","lazy$1","loadable$2","lib","layout","requiresAuth","useSlots","components","slots","fComponents","slot","Sidenav","sidenav","wrapper","compact","hidden","drawerClose","drawerOpen","autoExpand","autoExpandOn","autoExpandOff","enterActive","leaveActive","pageOverlay","dimensions","drawer","relativeTo","compactAutoExpandOnHover","compactAutoExpandDelay","compactSideContentSelector","drawerPageOverlay","drawerCloseOnEsc","trigger","triggerMode","animationDuration","leave","drawerInitiated","initialize","classList","updateWidth","handleDrawerBreakpoint","drawerBreakpoint","initDrawer","initAutoExpand","initTrigger","initDrawerCloser","triggerCallback","getCurrentWidth","addStyleToElem","wasInCompact","hasClass","destroyDrawer","expand","drawerCloser","animate","closeDrawer","removePageOverlay","triggerButton","openDrawer","createPageOverlay","show","hide","applyPosition","offsetTop","removePosition","delStyleFromElem","mouseEnter","mouseLeave","drawermousedownevent","drawerkeydownevent","getTransform","openState","forCompact","sidebarWidth","replaceClass","isCompact","animationNewState","classToRem","classToAdd","oldClass","newClass","properties","sidenavMenu","selector","sidemenu","menuItem","menuItemHasSub","subMenu","activeMenuItem","menuItemSubMenuOpen","menuItemSubMenuClose","menuItemContent","menuItems","init","visibility","refresh","changeType","sub","updateMenuItemState","ctx","isSubmenuOpen","hideSubmenu","menuItemClicked","onItemClick","subMenuItem","subMenuItems","addClassesToElem","subMenuHasActiveItem","removeClassesFromElem","showSubmenu","subMenuIsActive","menuItemOpen","_class","ItemsGroup","isSubMenu","_ref5","sidenavContext","SidenavContext","SideMenuRef","sideMenu","SideMenuLib","newState","dark","gutter","itemsIndicators","defineSize","sizes","small","large","Title","Item","icon","setActive","menuItemText","GoTo","_ref4","compactWidth","initiated","setInitiated","setInstance","sidenavRef","sideNav","Header","Body","Footer","NavMenu","layoutHeader","nav","layoutBody","layoutFooter","LayoutHeader","Nav","LayoutBody","LayoutFooter","boxed","themeSwitch","altThemeSelector","htmlCL","isAlt","ThemeSwitchRef","viewBox","fillRule","Layout","NavbarBrand","MARGINS","getDefaultDimensionValue","dimension","margins","parseInt","collapseStyles","getDimensionValue","Collapse","computedDimension","scroll","NavbarCollapse","NavbarContext","expanded","NavbarToggle","onToggle","makeEventKey","eventKey","NavbarText","Navbar","initialBsPrefix","fixed","sticky","onSelect","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","SelectableContext","Brand","Toggle","MdMenu","AccordionCollapse","activeEventKey","AccordionContext","AccordionBody","AccordionItemContext","AccordionButton","accordionOnClick","useAccordionButton","AccordionHeader","AccordionItem","Accordion","activeKey","scrollbarSize","recalc","scrollDiv","position","offsetWidth","clientWidth","useCallbackRef","usePrevious","addClass","baseVal","replaceClassName","origClass","classToRemove","removeClass","isWindow","DOCUMENT_NODE","isOverflowing","container","win","bodyIsOverflowing","scrollHeight","clientHeight","BLACKLIST","siblings","exclude","isHidable","ariaHidden","ModalManager","_temp","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","getScrollbarSize","isContainerOverflowing","modal","containerIndexFromModal","overflowing","idx","findIndexOf","setContainerStyle","containerState","paddingRight","removeContainerStyle","modalIdx","containerIdx","dialog","backdrop","hideSiblings","showSiblings","_data$modals","isTopModal","manager","resolveContainerRef","useModalManager","provided","modalManager","setDialogRef","setBackdropRef","Modal","_ref$show","_ref$role","_ref$backdrop","_ref$keyboard","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerRef","containerClassName","onShow","_ref$onHide","onHide","onResolved","resolvedRef","setRef","earlyRef","nextRef","useWaitForDOMRef","prevShow","exited","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","preventScroll","Manager","qsa","Selector","BootstrapModalManager","adjustAndStore","adjust","actual","sharedManager","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","AbstractModalHeader","closeLabel","closeVariant","closeButton","ModalContext","ModalHeader","DivStyledAsH4","divWithClassName","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","backdropClassName","propsManager","modalStyle","setStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","paddingLeft","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","BaseModal","isAppearing","onMouseUp","onMouseDown","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","setLoading","useCategory","setIsLoading","showAllMailCategories","setShowAllMailCategories","setShow","modalContent","setModalContent","modalContentFormat","setModalContentFormat","inputValue","setInputValue","customUrl","setCustomUrl","handleClose","page_info","category","Page","extra","placeholder","defaultActiveKey","isMailCategory","isCategoryInList","shouldRenderCategory","alt","actions","textDecoration","submitextra","matchesImpl","useGlobalListener","eventTarget","useEventListener","getBasePlacement","placement","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","round","getBoundingClientRect","includeScale","rect","scaleX","scaleY","right","bottom","getLayoutRect","clientRect","abs","offsetLeft","rootNode","isSameNode","host","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placements","modifierPhases","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","axis","len","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","centerOffset","effect","_options$element","requires","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","contextElement","referenceClientRect","strategy","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","styles","effectCleanupFns","isDestroyed","cleanupModifierEffects","scrollParents","orderModifiers","merged","existing","mergeByName","_ref3$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$scroll","_options$resize","resize","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","_i","fittingPlacement","initialPopperStyles","opacity","pointerEvents","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","_state$elements2","EMPTY_MODIFIERS","popperElement","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","useSafeState","popperState","updateModifier","getRefTarget","onRootClose","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","onClose","handleMouseCapture","isLeftClickEvent","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","flip","containerPadding","_ref$popperConfig","popperConfig","toModifierMap","eventListeners","useDropdownMenu","DropdownContext","_useCallbackRef","attachArrowRef","hasShownRef","rootCloseEvent","_options$fixed","_options$popperConfig","_options$usePopper","usePopper","shouldUsePopper","alignEnd","drop","setMenu","menuElement","toggleElement","menuProps","metadata","hasShown","toggle","arrowProps","useRootClose","DropdownMenu","_useDropdownMenu","useDropdownToggle","_ref$toggle","setToggle","DropdownToggle","_useDropdownToggle","focusFirstItemOnShow","itemSelector","defaultShow","useRefWithUpdate","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","_useRefWithUpdate","menuRef","_useRefWithUpdate2","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","first","getNextFocusedChild","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_next","_menuRef$current2","NavContext","DropdownItem","propActive","onSelectCtx","navContext","useWrappedRefWithWarning","align","showProps","renderOnMount","alignRight","isNavbar","contextAlign","isInputGroup","alignClasses","childBsPrefix","dropdownContext","toggleProps","DropdownHeader","DropdownDivider","DropdownItemText","pProps","navbar","_4","autoClose","handleToggle","isClosingPermitted","handleSelect","BaseDropdown","ItemText","Divider","Sidebar","dropdownTitle","setDropdownTitle","setUser","userInfo","fetchData","scrollbarWidth","msOverflowStyle","AccordionSidebar","marginTop","clipboard","writeText","alert","alignSelf","DefaultLayout","fontSize","ThemeSwitch","blank","BlankLayout","isAuthenticated","ScrollToTop","mainContent","getElementById","scrollTo","routesWithLayouts","routes","routesGroupedByLayouts","rv","layoutName","LayoutTag","layouts","layoutRoutes","ToastContainer","RouteType","PrivateRoute","App"],"sourceRoot":""}